/** * Send a post request */ function send(url, params) { // Obtain an XMLHttpRequest instance var req = newXMLHttpRequest(); // Set the handler function to receive callback notifications // from the request object var handlerFunction = getReadyStateHandler(req, updateBaskets); req.onreadystatechange = handlerFunction; // Open an HTTP POST connection to the shopping cart servlet. // Third parameter specifies request is asynchronous. req.open("POST", url, true); // Specify that the body of the request contains form data req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // Send form encoded data stating that I want to add the // specified item to the cart. var parameters = getParams(params); //log(parameters); req.send(parameters); } function getBasketIdFromRequest() { var uri = document.location.search; if (uri != null && uri != "") { uri = uri.substring(1, uri.length); } else { return null; } var reqparams = uri.split("&"); for (var j = 0; j < reqparams.length; j++) { if (reqparams[j].search("basketid") > -1) { return reqparams[j]; } } } function getParams(params) { var basketid = document.getElementById("basket-id").value; if (basketid != "") { var parameters = "basketid="+basketid+"&"+params; return parameters; } return params; } function log(parameters) { var table = document.getElementById("log"); table.innerHTML = ""; var tr = document.createElement("tr"); table.appendChild(tr); var td = document.createElement("td"); tr.appendChild(td); td.innerHTML = parameters; } /* * Returns a new XMLHttpRequest object, or false if this browser * doesn't support it */ function newXMLHttpRequest() { var xmlreq = false; if (window.XMLHttpRequest) { // Create XMLHttpRequest object in non-Microsoft browsers xmlreq = new XMLHttpRequest(); } else if (window.ActiveXObject) { // Create XMLHttpRequest via MS ActiveX try { // Try to create XMLHttpRequest in later versions // of Internet Explorer xmlreq = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e1) { // Failed to create required ActiveXObject try { // Try version supported by older versions // of Internet Explorer xmlreq = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e2) { // Unable to create an XMLHttpRequest with ActiveX } } } return xmlreq; } /** * Returns a function that waits for the specified XMLHttpRequest * to complete, then passes its XML response * to the given handler function. * req - The XMLHttpRequest whose state is changing * responseXmlHandler - Function to pass the XML response to */ function getReadyStateHandler(req, responseXmlHandler) { // Return an anonymous function that listens to the // XMLHttpRequest instance return function () { // If the request's status is "complete" if (req.readyState == 4) { // Check that a successful server response was received if (req.status == 200 || req.status == 0) { // Pass the XML payload of the response to the // handler function responseXmlHandler(req.responseXML); } else { // An HTTP problem has occurred alert("Järjestelmässä tapahtui virhe. Yritä myöhemmin uudelleen. Virhekoodi: " + req.status); } } } } function updateBaskets(basketXML) { updateBasket(basketXML, "basket-table", false); if (document.getElementById("main-basket") != null) { updateBasket(basketXML, "main-basket", true); } } function onloadAction() { var basketid = document.getElementById("basket-id").value; if (basketid != null && basketid != "") { send('/ajax', "handler=basket&action=get"); } } function roundCents(sum) { return Math.round(100*sum)/100; } /** * Update the basket with content from XML */ function updateBasket(basketXML, currentTable, modifyView) { if (basketXML.getElementsByTagName("success").length > 0) { var basketid = document.getElementById("basket-id").value; send('/ajax', "handler=basket&action=remove"); document.location = "/jump?basketID="+basketid; return; } var basket = basketXML.getElementsByTagName("basket")[0]; var basketid = basket.getAttribute("id"); var complete = basket.getAttribute("complete"); document.getElementById("basket-id").value = basketid; var div = document.getElementById(currentTable); div.innerHTML = ""; var html = ""; html += "