RbnRequest = function(action, params) {
    var m_request;
    var m_ajax = new Jax.Ajax("webservices.php");
    m_ajax.open();
    m_ajax.setRequestHeader(Jax.Ajax.MIME_ENCODED);
    
	// Declare class and set instance.
    Jax.oop.declare(RbnRequest);
    this.setInstance();
    
    // Set up request.
    var m_request = "action=" + action;
    if (params !== undefined && params !== null) {
        params.forEach(function(item, index) {
            m_request += '&' + item.name + '=' + item.value;
            return false;
        });
    }
    
	//////////////////////////////////////////////////////////////////////////
	//	send
	//////////////////////////////////////////////////////////////////////////
    this.send = function() {
        m_ajax.send(m_request);
        return m_ajax.getResponseText();
    }
}    

RbnCalcOrderRequest = function(sku, order) {
    var request = new RbnRequest("CalcItem", [{name:"sku", value:sku}, {name:"order", value:order}]);
    var m_response = request.send();
    
    this.getResponse = function() {
        return m_response;
    }
}

RbnCalcShippingRequest = function(request) {
    var m_response = new RbnRequest("CalcShipping", [{name:"request", value:request}]).send();

    this.getResponse = function() {
        return m_response;
    }
}

RbnShippingDestinationsRequest = function() {
    var request = new RbnRequest("GetShippingDestinations");
    var m_response = request.send();
    
    this.getResponse = function() {
        return m_response;
    }
}

RbnShippingDestinationLocalesRequest = function(request) {
    var m_response = new RbnRequest("GetShippingDestinationLocales", [{name:"request", value:request}]).send();
    
    this.getResponse = function() {
        return m_response;
    }
}

RbnShippingMethodsRequest = function(request) {
    var m_response = new RbnRequest("GetShippingMethods", [{name:"request", value:request}]).send();
    
    this.getResponse = function() {
        return m_response;
    }
}
