function cartRemoveItem(ftCartId, signature) {

    // execute AJAX post to server
    var sUrl = "/cart/ajax.php";
    var postData = "sig=" + signature + "&remove=" + ftCartId;

    // define AJAX success method
    var handleSuccess = function(o) {
        if(o.responseText !== undefined) {
            YAHOO.shoppingcart.panel.setBody(o.responseText);
            YAHOO.shoppingcart.panel.render(document.body);

            YAHOO.util.Event.addListener("hidecart", "click", YAHOO.shoppingcart.panel.hide, YAHOO.shoppingcart.panel, true);

            // call 2nd AJAX function to update display of cart summary details
            cartUpdateSummary(signature);

        } else {
            alert("Server returned unexpected response; please try your transaction again.");
        }
    }

    // define AJAX failure method
    var handleFailure = function(o) {
        alert("Error communicating with web server; please try your transaction again. (" + o.statusText + ")");
    }

    // define callback object
    var callback =
    {
        success:handleSuccess,
        failure: handleFailure,
        timeout: 5000
    };

    // execute AJAX request
    var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);
}

function cartUpdateSummary(signature) {

    var sUrl2 = "/cart/ajax_sum.php";
    var postData2 = "sig=" + signature;

    // define AJAX success method
    var handleSuccess2 = function(o) {
        if(o.responseText !== undefined) {
            var newContent = o.responseText;
            var newContentArray = newContent.split('|');
            var elem0 = top.window.document.getElementById("cartItemCount");
            var elem1 = top.window.document.getElementById("cartTotal");

            if (elem0 && elem1 && newContentArray[0] && newContentArray[1]) {
                elem0.innerHTML = newContentArray[0];
                elem1.innerHTML = newContentArray[1];
            }

        } else {
            alert("Server returned unexpected response; please try your transaction again.");
        }
    }

    // define AJAX failure method
    var handleFailure2 = function(o) {
        alert("Error communicating with web server; please try your transaction again. (" + o.statusText + ")");
    }

    // define callback object
    var callback2 =
    {
        success: handleSuccess2,
        failure: handleFailure2,
        timeout: 5000
    };

    // execute AJAX request
    var request2 = YAHOO.util.Connect.asyncRequest('POST', sUrl2, callback2, postData2);
}

function cartUpdateQuantity(signature) {

    var sUrl3 = "/cart/ajax.php";
    var postData3 = "sig=" + signature + "&updateCartAjax=1";

    var formFields = top.window.document.cartform.elements;
    var formField;
    var regExp = new RegExp("^qty_", "i");
    var tempStr;
    for(var i=0; i < formFields.length; i++) {
        formField = formFields[i];
        //alert(formField + ".name: " + formField.name);
        if (formField) {
            tempStr = formField.name + '';
            if (tempStr.match(regExp)) {
                postData3 = postData3 + '&' + tempStr + '=' + formField.value;
            }
        }
    }

    // define AJAX success method
    var handleSuccess3 = function(o) {
        if(o.responseText !== undefined) {
            YAHOO.shoppingcart.panel.setBody(o.responseText);
            YAHOO.shoppingcart.panel.render(document.body);

            YAHOO.util.Event.addListener("hidecart", "click", YAHOO.shoppingcart.panel.hide, YAHOO.shoppingcart.panel, true);

            // call 2nd AJAX function to update display of cart summary details
            cartUpdateSummary(signature);
        } else {
            alert("Server returned unexpected response; please try your transaction again.");
        }
    }

    // define AJAX failure method
    var handleFailure3 = function(o) {
        alert("Error communicating with web server; please try your transaction again. (" + o.statusText + ")");
    }

    // define callback object
    var callback3 =
    {
        success: handleSuccess3,
        failure: handleFailure3,
        timeout: 5000
    };

    // execute AJAX request
    var request3 = YAHOO.util.Connect.asyncRequest('POST', sUrl3, callback3, postData3);
}
