// ******************************************
// * $Id$
// *
// *   submitHTTP()
// *
// * Verstuur gegevens via HTTP naar een asp-bestand
// * die de gegevens verder kan verwerken.
// *
// ******************************************
function submitHTTP( p_connect
                   , p_textstream
                   , p_bedrijfadres
                   )
{
    //
    // Verstuur de HTTP aanvraag
    //
    Log2File(2, "*> submitHTTP");

    var XMLhttp = new ActiveXObject("Msxml2.ServerXMLHTTP.6.0");
    // contanten in msxml2
    var SXH_PROXY_SET_PROXY = 2;
    var SXH_OPTION_SELECT_CLIENT_SSL_CERT = 3;

    //
    // Verstuur de HTTP aanvraag
    if (S("puo_useproxy"))
    {
        var proxy_ip = S("puo_proxyserveripaddress");
        Log2File(1, "Opening proxy " + proxy_ip);
        XMLhttp.setProxy(SXH_PROXY_SET_PROXY, proxy_ip);
    }

    var endpoint = p_connect.CurrentAddress;
    if (p_bedrijfadres.certificateName != "")
    {
        Log2File(1, "Client certificateName= " + p_bedrijfadres.certificateName);
        XMLhttp.SetOption(SXH_OPTION_SELECT_CLIENT_SSL_CERT, p_bedrijfadres.certificateName);
    }
    XMLhttp.open("POST", endpoint, false, p_bedrijfadres.username, p_bedrijfadres.password);
    Log2File(2, "connect.CurrentAddress: " + endpoint);

    // De volgende regels zijn alleen nodig als het certificaat (nog) niet vertrouwd wordt.
    // Op te lossen door cacert.der van csnet te installeren
    //    secu = XMLhttp.getOption(SXH_OPTION_IGNORE_SERVER_SSL_CERT_ERROR_FLAGS)
    //    secu = secu Or SXH_SERVER_CERT_IGNORE_UNKNOWN_CA
    //    Call XMLhttp.setOption(SXH_OPTION_IGNORE_SERVER_SSL_CERT_ERROR_FLAGS, secu)
    XMLhttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8");

    if (p_bedrijfadres.username)
    {
      var base64 = new Base64Cls();
      XMLhttp.setRequestHeader("Authorization", "Basic " + base64.encode(p_bedrijfadres.username + ":" + p_bedrijfadres.password));
    }

    XMLhttp.send(p_textstream);
    Log2File(1, "XMLhttp.status: " + XMLhttp.status);
    if (XMLhttp.status < 200 || XMLhttp.status > 299)
    {
        Log2File(1, "HTTP response: " + (XMLhttp.responseText||"<leeg>"));
        Log2File(1, "response Status: " + XMLhttp.status + ": " + XMLhttp.statusText);
        Log2File(3, "response Headers: " + XMLhttp.getAllResponseHeaders);
        RaiseAnError(XMLhttp.status, "XMLhttp error " + XMLhttp.status + ": (" + XMLhttp.statusText + ")")
    }
    else
    {
        Log2File(3, "HTTP response = " + XMLhttp.responseText);
    }
    Log2File(2, "*< submitHTTP");

    return XMLhttp.responseText;
}
