/**
	 * Renders a basket with content
	 *
	 * @param  string  $summaryText     Title         default: CBPTxt("Payment")
	 * @param  string  $captionText     Subtitle      default: CBPTxt("Your membership for payment:")
	 * @param  string  $displayColumnsParamsBaseName  'basket' or 'invoice'
	 * @param  string  $output                        'html' or ?
	 * @return string                                 HTML content with a table for the basket
	 */
	public function displayBasket( $summaryText = "Payment", $captionText = "Your membership for payment:", $displayColumnsParamsBaseName = 'basket', $output = 'html' ) {
		$return							=	null;

		$params							=&	cbpaidApp::settingsParams();

		$this->loadPaymentItems();
		$this->loadPaymentTotalizers();

		$displayColumns					=	 $this->_basketColumns( $displayColumnsParamsBaseName . '_item_line1_columns' );
		$totalizerColumns				=	 $this->_basketColumns( $displayColumnsParamsBaseName . '_totalizer_line1_columns' );

		// Now computes all basket items lines columns content, and removes completely emty columns:

		// this will hold 2-dimensional array of values in basket items view:
		$itemsLinesCols					=	array();
		foreach ( array_keys( $this->_paymentItems ) as $lineIdx ) {
			$itemsLinesCols[$lineIdx]['plan_cssclass']		=		$this->_paymentItems[$lineIdx]->getPlanParam( 'cssclass', '', null );
			foreach ( array_keys( $displayColumns ) as $colName ) {
				$itemsLinesCols[$lineIdx][$colName]		=	$this->renderBasketItem( $lineIdx, $colName, $output );
			}
		}
		if ( $params->get( $displayColumnsParamsBaseName . '_item_display_empty_columns', 0 ) == 0 ) {
			$this->_cleanUpEmptyColumns( $displayColumns, $itemsLinesCols );
		}

		$totalizerLinesCols				=	array();
		foreach ( array_keys( $this->_paymentTotalizers ) as $lineIdx ) {
			$totalizerLinesCols[$lineIdx]['totalizer_type']		=	$this->_paymentTotalizers[$lineIdx]->totalizer_type;
			foreach ( array_keys( $totalizerColumns ) as $colName ) {
				$totalizerLinesCols[$lineIdx][$colName]			=	$this->renderBasketTotalizer( $lineIdx, $colName, $output );
			}
		}
		if ( $params->get( $displayColumnsParamsBaseName . '_totalizer_display_empty_columns', 0 ) == 0 ) {
			$this->_cleanUpEmptyColumns( $totalizerColumns, $totalizerLinesCols );
		}


		if ( count( $this->_paymentTotalizers ) == 0 ) {
			// We have an old basket, that did not have totalizers: we still need to display it properly:
			if ( count ( $totalizerColumns ) == 0 ) {
				$totalizerColumns		=	array( 'description' =>	'Item', 'rate'	=>	'Price' );
			}
			$totalizerLinesCols			=	array();
			if ( ( (float) $this->tax ) != 0.0 ) {
				$renderedTotalNoTax		=	$this->renderTax( $this->mc_gross - $this->tax, true );
				$renderedTaxAmount		=	$this->renderTax( $this->tax, true );

				$totalizerLinesCols[]	=	array( 'totalizer_type' => 'subtotal1', 'description' =>	CBPTXT::Th("Total before tax"), 'rate'	=>	$renderedTotalNoTax );
				$totalizerLinesCols[]	=	array( 'totalizer_type' => 'salestax', 'description' => CBPTXT::Th("Sales tax"), 'rate'	=>	$renderedTaxAmount );
			}
			$renderedBasketPrice		=	$this->renderPrice( null, null, null, true );
			$totalizerLinesCols[]		=	array( 'totalizer_type' => 'grandtotal', 'description' => CBPTXT::Th("Total"), 'rate'	=>	$renderedBasketPrice );
		}

		$subscriptionsGUI				=	new cbpaidControllerUI();
		$return							=	$subscriptionsGUI->showBasket( $this, $summaryText, $captionText, $displayColumns, $totalizerColumns, $itemsLinesCols, $totalizerLinesCols );

		return $return;
	}