
var paymentHelper = {

	// private function
	_getHttpReqObject : function () {
		xmlHttpReq=null;
		try { // Firefox, Opera 8.0+, Safari
			xmlHttpReq=new XMLHttpRequest();
		} catch (e) {
			try { // Internet Explorer
				xmlHttpReq=new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e2) {
				try {
					xmlHttpReq=new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e4) {
					alert("Your browser does not support AJAX!");
				}
			}
		}
		
		if (!xmlHttpReq && typeof XMLHttpRequest!='undefined') {
			try {
				xmlHttpReq = new XMLHttpRequest();
			} catch (e) {
				xmlHttpReq=false;
			}
		}
	 
		if (!xmlHttpReq && window.createRequest) {
			try {
				xmlHttpReq = window.createRequest();
			} catch (e) {
				xmlHttpReq=false;
			}
		}
		return xmlHttpReq;
	},

	// private function
	_loadXMLDoc : function(requestObj, url, handler) {
		if (requestObj) {
			requestObj.onreadystatechange = function() { handler(requestObj); };
			requestObj.open("GET", url, true);
			requestObj.send(null);
	   	}
	},
	
	// public function
	listPaymentMethods : function(storeId, options) {
		if (options == null) {
			options = {};
		}
		
		var reqObject = this._getHttpReqObject();
		
		var url = '/Magellan/pages/ajax/listPaymentMethods.jsp?storeId=' + storeId + '&' + (new Date()).getTime();
		var that = this;
		
		var handler = function(httpRequest) {
				if (httpRequest.readyState == 4 && httpRequest.status == 200) {
					var response = eval('(' + httpRequest.responseText + ')');

					if (options.onComplete) {
						options.onComplete(response);
					}
				}
			};
		
		this._loadXMLDoc(reqObject, url, handler);
	},
	
	// public function
	buy : function(storeId, paymentMethod, payformData, options) {
		if (options == null) {
			options = {};
		}
		
		var reqObject = this._getHttpReqObject();
		
		var params = "";
		for (var i=0; i < payformData.length; i++) {
			params += "&prefix." + payformData[i].name + "=" + payformData[i].value;
		}
		
		var url = '/Magellan/pages/ajax/purchase.jsp?storeId=' + storeId + '&pMethod=' + escape(paymentMethod) + params + '&' + (new Date()).getTime();
		var that = this;
		
		var handler = function(httpRequest) {
				if (httpRequest.readyState == 4 && httpRequest.status == 200) {
					var response = eval('(' + httpRequest.responseText + ')');

					if (options.onComplete) {
						options.onComplete(response);
					}
				}
			};
		
		this._loadXMLDoc(reqObject, url, handler);
	}
}