<?php
if(!defined('QUINTACMS') ) die("No quinta.");

if (!defined("CHECKOUTTOTALSCONTROLLER.CLASS.PHP")){
define("CHECKOUTTOTALSCONTROLLER.CLASS.PHP",1);

	/**
	* Class CheckOutTotalsController - provides display of order totals, shipping and handling
	* charges for display during checkout
	*@author Erik Winn <sidewalksoftware@gmail.com>
	*
	*@version 0.3
	*
	*@package Quinta
	* @subpackage Classes
	*/
 class CheckOutTotalsController extends QPanel{
		/**
		*@var CheckOutModule objControlBlock - the main control block for the check out module
		*/
		protected $objControlBlock;
		/**
		*@var float fltShippingCharge - shipping for order
		*/
		protected $fltShippingCharge;
		/**
		*@var float fltHandlingCharge - handling for order
		*/
		protected $fltHandlingCharge;
		/**
		*@var float fltTaxesCharge - taxes for order
		*/
		protected $fltTaxesCharge;
		/**
		*@var float fltTotalItemsCharge - sub total of all the items on an order
		*/
		protected $fltTotalItemsCharge;
		/**
		*@var float fltTotalCharge - grand total of all charges for order
		*/
		protected $fltTotalCharge;
		/**
		* @var QLabel lblHandlingCharge - display for handling charges ..
		*/
		public $lblHandlingCharge;
		/**
		* @var QLabel lblShippingCharge - display for shipping charges ..
		*/
		public $lblShippingCharge;
		/**
		* @var QLabel lblTaxesCharge - display for total taxes for the order
		*/
		public $lblTaxesCharge;
		/**
		* @var QLabel lblTotalItemsCharge - display for total of Item charges for the order
		*/
		public $lblTotalItemsCharge;
		/**
		* @var QLabel lblTotalCharge - display for grand total charges for the order
		*/
		public $lblTotalCharge;

		/**
		* CheckOutTotalsController constructor
		*@param CheckOutView  objControlBlock - parent controller module.
		*/
		public function __construct( QPanel $objControlBlock){

			try {
				parent::__construct($objControlBlock);
			} catch (QCallerException $objExc) {
				$objExc->IncrementOffset();
				throw $objExc;
			}

			$this->AutoRenderChildren = true;
			$this->strTemplate = __QUINTA_CORE_VIEWS__ . '/CheckOutTotalsView.tpl.php';

			$this->lblShippingCharge = new QLabel($this);
			$this->lblHandlingCharge = new QLabel($this);
			$this->lblTotalItemsCharge = new QLabel($this);
			$this->lblTaxesCharge = new QLabel($this);
			$this->lblTotalCharge = new QLabel($this);
		}

		public function RefreshTotal(){
			$this->TotalCharge = $this->fltShippingCharge
											   + $this->fltHandlingCharge
											   + $this->fltTaxesCharge
											   + $this->fltTotalItemsCharge;
		}
		/**
		 * This Function is called when any input is sent - on failure the
		 * fields are redrawn with optional error messages.
		 */
		public function Validate(){
			$blnToReturn = true;
			// validate input here
			return $blnToReturn;
		}

		public function __get($strName){
			switch ($strName){
				case 'ShippingCharge':
					return $this->fltShippingCharge ;
				case 'HandlingCharge':
					return $this->fltHandlingCharge ;
				case 'TotalCharge':
					return $this->fltTotalCharge ;
				case 'TotalCharge':
					return $this->fltTotalItemsCharge ;
				case 'TaxesCharge':
					return $this->fltTaxesCharge ;
				default:
					try {
						return parent::__get($strName);
					} catch (QCallerException $objExc) {
						$objExc->IncrementOffset();
						throw $objExc;
					}
			}
		}

		public function __set($strName, $mixValue){
			switch ($strName){
				case 'ShippingCharge':
						$this->fltShippingCharge = $mixValue;
						$this->lblShippingCharge->Text = money_format('%n', $mixValue);
						$this->RefreshTotal();
						break;
				case 'HandlingCharge':
						$this->fltHandlingCharge = $mixValue;
						$this->lblHandlingCharge->Text = money_format('%n', $mixValue);
						$this->RefreshTotal();
						break;
				case 'TaxesCharge':
						$this->fltTaxesCharge = $mixValue;
						$this->lblTaxesCharge->Text = money_format('%n', $mixValue);
						$this->RefreshTotal();
						break;
				case 'TotalItemsCharge':
						$this->fltTotalItemsCharge = $mixValue;
						$this->lblTotalItemsCharge->Text = money_format('%n', $mixValue);
						$this->RefreshTotal();
						break;
				case 'TotalCharge':
						$this->fltTotalCharge = $mixValue;
						$this->lblTotalCharge->Text = money_format('%n', $mixValue);
						break;

				default:
					try {
						return (parent::__set($strName, $mixValue));
					} catch (QCallerException $objExc) {
						$objExc->IncrementOffset();
						throw $objExc;
					}
			}
		}

  }//end class
}//end define
?>