<%@ LANGUAGE = JavaScript %>
<% /*
    $Revision$
    $Id$

    File:           exp_export.asp
    Description:    Export, resultaat direct downloaden
    Parameters:
        export_key  Export key uit fac_export_app
        compress    Optional 0 of 1, overrules flag in fac_export_app
    Context:
    Note:           De download limiet ligt meestal rond de 5MB
                    Daar kun je een beetje omheen werken dooe &compress=1 mee te geven

    TODO: Er is nog geen interface om aanroep van dit bestand te regelen
*/ %>
<%
Server.ScriptTimeout = 6000; // Extra tijd
DOCTYPE_Disable = 1;
%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/json2.js" -->
<script language="javascript" src="exp_shared.js" runat="server"></script>

<%
    var export_key = getQParamInt("export_key"); // 24=HV_DUMP,25=CPUA

    var params        = getSettings(export_key);
    user.checkAutorisation(params.functie_key);

    params.custid     = customerId;
    params.compress   = getQParamInt("compress", params.compress?1:0) == 1; // Je mag in de url overrulen
    params.tempFolder = Server.MapPath("../../temp/");
    params.applrun    = new Date();
    params.preview    = getQParamInt("preview", "0") == 1; // dan geen _EXPORT_ achteraan aanroepen?

    var streamObj = expCreateStream(export_key, params);

    Response.clear;
    streamObj.streamData.Type = 1; // verder als adTypeBinary
    if (params.compress)
    {
        Response.contenttype = 'application/zip';
    }
    else
    {
        if (params.charset.toUpperCase() == 'UTF-8')
        {
            Session.Codepage = 65001;
            Response.Charset = 'utf-8'; // Alleen voor de header var, we doen zo een binary write
        }
        Response.contenttype = "application/octet-stream";
    }
    Response.AddHeader("content-disposition", "attachment; filename= \"" + streamObj.exportFile + "\"");
    try
    {
        Response.BinaryWrite(streamObj.streamData.Read());
    }
    catch (e)
    {   // Meestal te groot
        var msg = L("lcl_export_oversized").format(params.code, export_key, streamObj.streamData.Size); // S("maxdownloadsize")
        __DoLog(e.description + "<br>" + msg);
        Response.clear;
        Response.contenttype = "text/html";
        // De content-disposition krijgen we niet echt weg
        Response.Write(msg);
    }

%>
