/*****************************************************************************/
/**  OBJECT MODEL DEFINITION  ****************************************/
/*****************************************************************************/

/*****************************************************************************/
/**  DEFINITION ....: IBasket  ***********************************************/
/*****************************************************************************/
/**  Basket was used to store global basketproperties.                   **/
/**  For example, contains global return state.                             **/
/*****************************************************************************/

/**
 * Constructor.
 * _basketId (string) ........: The basket id
 * _nbItem (string) .........: The number of item in the basket
 * _ errorCode (string) ...........: The code of the error
 * _ errorMessage (string) ...........: The message of the error code
 * _param (string) .......... : The encrypted param passed to eresa
 */
function IBasket(_basketId, _nbItem, _errorCode, _errorMessage, _param) {
	/** Basket's Attributes  ************************************************/
	this.basketId = _basketId;
	this.nbItem = _nbItem;
	this.errorCode = _errorCode;
	this.errorMessage = _errorMessage;
	this.param= _param;
	/** Context's Methods  ***************************************************/
	this.display = _displayBasket;
}

/**
 * This method was used to display basket content in a HTML format.
 */ 
function _displayBasket() {
	with (this) {		
		return "Basket() : " + basketId + "<BR>" + nbItem + "<BR>" + errorCode + "<BR>" + errorMessage;
	}
}

/*****************************************************************************/
/**  DOM to JAVASCRIPT OBJECT MODEL PROCESS  *******************/
/*****************************************************************************/
/**
 * This method was used to run the basket processes.
 * Either retreiving of the basket parameters encrypted	
 * Or call of the addBasket function on eresa module
 */
function loadBasket(url) {    
	
	loaded = false;

	var func = function (xmlHttp, httpStatus) {	   
		oGlobalXml = xmlHttp.responseXML;
		if(oGlobalXml!=null) {     
		        oBasket = getBasket(oGlobalXml);		          
			loaded = true;
		}
	};
  
	var oProcess = new IAjaxProcess(url, func);
	
	oProcess.run();

}

/**
 * This method was used to retrieve a basket object from a basket DOM node.
 */
function getBasket(oBasketNode) {
	try {
		if (oBasketNode == null || oBasketNode == undefined) {
			return null;
		}
		
		var oBasketId = getChildNodeValue(oBasketNode, "basketId");
		var oNbItem = getChildNodeValue(oBasketNode, "nbItem");
		var oErrorCode = getChildNodeValue(oBasketNode, "errorCode");
		var oErrorMessage = getChildNodeValue(oBasketNode, "errorMessage");
		var oParam = getChildNodeValue(oBasketNode, "param");
		
		var basket = new IBasket(oBasketId, oNbItem,oErrorCode,oErrorMessage, oParam);		

		return basket;
	} catch(e) {
		//alert("Exception getBasket(oBasketNode)");
		return null;
	}
}

/*****************************************************************************/
/**  Static Attribute / Property Section  ************************************/
/*****************************************************************************/

var oGlobalXml = null;
var oBasket = null;
var loaded = false;

/*****************************************************************************/
/**  Static Process Section  *************************************************/
/*****************************************************************************/

/**
 * This method was used to retrieve basketId
 */
function getBasketId() {
	try {
		if (oBasket == null || oBasket == undefined) {
			return null;
		}
		
		return oBasket.basketId;		
		
	} catch(e) {
		//alert("getBasketId()");
		return null;
	}
}

/**
 * This method was used to retrieve basketNbItem
 */
function getNbItem() {
	try {
		if (oBasket == null || oBasket == undefined) {
			return null;
		}
		
		return oBasket.nbItem;		
		
	} catch(e) {
		//alert("getNbItem()");
		return null;
	}
}

/**
 * This method was used to retrieve basketErrorCode
 */
function getErrorCode() {
	try {
		if (oBasket == null || oBasket == undefined) {
			return null;
		}
		
		return oBasket.errorCode;		
		
	} catch(e) {
		//alert("getErrorCode()");
		return null;
	}
}

/**
 * This method was used to retrieve basketErrorMessage
 */
function getErrorMessage() {
	try {
		if (oBasket == null || oBasket == undefined) {
			return null;
		}
		
		return oBasket.errorMessage;		
		
	} catch(e) {
		//alert("getErrorMessage()");
		return null;
	}
}

/**
 * This method was used to retrieve basketEncryptedParam
 */
function getBasketParam() {
	try {		
		if (oBasket == null || oBasket == undefined) {
			return null;
		}
		return oBasket.param;		
		
	} catch(e) {
		return null;
	}
}
