function getHTTPRequest () {
  var httpRequest= false;

  if (window.XMLHttpRequest) {
    httpRequest= new XMLHttpRequest ();
    if (httpRequest.overrideMimeType) {
      httpRequest.overrideMimeType('text/xml');
    }
  } else if (window.ActiveXObject) {
    try {
      httpRequest= new ActiveXObject ("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        httpRequest= new ActiveXObject ("Microsoft.XMLHTTP");
      } catch (e) {}
    }
  }

  if (!httpRequest) {
    alert ("AJAX error: cannot create XMLHTTP instance");
    return false;
  }

  return httpRequest;
}

// Don't do anything (for onreadystatechange)
function ignoreAJAX () {
  return;
}

function selectInvoice (invoiceNum, checked) {
  var httpRequest= getHTTPRequest ();
  var checkedVal= checked ? 1 : 0;

  if (httpRequest) {
    httpRequest.onreadystatechange= function () { updateTotals (httpRequest); };
    httpRequest.open ("GET", "https://www.sosglobal.com/payment.php?rm=select_invoice_new&num=" + encodeURI (invoiceNum) + "&val=" + checkedVal + "&ts=" + new Date ().getTime (), true);
    httpRequest.send (null);
  }

  return void (0);
}

function selectAll (checked) {
  var checkboxes= document.getElementsByTagName ("input");

  for (var i= 0; i < checkboxes.length; i++) {
    if (checkboxes[i].getAttribute ("type") == "checkbox") {
      checkboxes[i].checked= checked;
    }
  }

  var httpRequest= getHTTPRequest ();
  var checkedVal= checked ? 1 : 0;

  if (httpRequest) {
    httpRequest.onreadystatechange= function () { updateTotals (httpRequest); };
    httpRequest.open ("GET", "https://www.sosglobal.com/payment.php?rm=select_all_new&val=" + checkedVal + "&ts=" + new Date ().getTime (), true);
    httpRequest.send (null);
  }

  return void (0);
}

function updateTotals (httpRequest) {
  if (httpRequest.readyState == 4) {
    if (httpRequest.status == 200) {
      var values= httpRequest.responseText.split ("---");
      document.getElementById ("selected_invoices").innerHTML= values[0];
      document.getElementById ("selected_amount").innerHTML= values[1];
    } else {
      alert ("There was a problem with the request, could not update totals");
    }
  }
}
