if (DHL == undefined) var DHL = {};
if (DHL.SITE == undefined) DHL.SITE = {};
DHL.SITE.FMS_SHOWRESPONSE_HANDLE = function () {
	this.objMessageBox = null;
	this.objShowRegistration = null;
	this.ptCallback = null;
	this.ptBuyCallback = null;
	this.ptResponseCallback = null;
}

var PUBLIC = DHL.SITE.FMS_SHOWRESPONSE_HANDLE.prototype;
var PRIVATE = DHL.SITE.FMS_SHOWRESPONSE_HANDLE.prototype;


PUBLIC.setMessageBox = function(objMsgBox) {
	this.objMessageBox = objMsgBox;
}

PUBLIC.setCallback = function(ptCallback) {
	this.ptCallback = ptCallback;
}
PUBLIC.setBuyCallback = function(ptCallback) {
	this.ptBuyCallback = ptCallback;
}
PUBLIC.setResponseCallback = function(ptCallback) {
	this.ptResponseCallback = ptCallback;
}
PUBLIC.getShowRegistration = function() {
	return this.objShowRegistration;
}

PUBLIC.handleResponse = function (objShowRegistration) {
this.objShowRegistration = objShowRegistration;
	var me = this;
	this.objMessageBox.addListener(DHL.UTIL.MESSAGEBOX.EVENT_RESPONSE, function(objMessageBox){
		if(objMessageBox.getClientResponse()) {
			me.sendToPrivate(objShowRegistration)
		}
	});	
	
	if(objShowRegistration.isSendPrivate()) {
		if(objShowRegistration.isShowMessage()) {
			this.objMessageBox.alert(
				objShowRegistration.getTitle(), 
				objShowRegistration.getMessage()
			);
		}
		else{
			this.sendToPrivate(objShowRegistration);
		}
	}
	else{
		switch(objShowRegistration.getLastException()) {
			case DHL.SITE.FMS_SHOWREGISTRATION.EXCEPTION_ALREADYINPRIVATE :
			case DHL.SITE.FMS_SHOWREGISTRATION.EXCEPTION_INFEATURE :
			case DHL.SITE.FMS_SHOWREGISTRATION.EXCEPTION_REQUIREAPRIVATE :
				this.sendToPrivate(objShowRegistration);
			break;
			case DHL.SITE.FMS_SHOWREGISTRATION.EXCEPTION_NOTENOUGHFUND :
			case DHL.SITE.FMS_SHOWREGISTRATION.EXCEPTION_INBREAK :
				this.objMessageBox.alert(
					objShowRegistration.getTitle(),
					objShowRegistration.getMessage(),
					objShowRegistration.getArrButton()
					);
			break;
			case DHL.SITE.FMS_SHOWREGISTRATION.EXCEPTION_REQUIRE_USER:
				this.objMessageBox.alert(
					objShowRegistration.getTitle(),
					objShowRegistration.getMessage(),
					objShowRegistration.getArrButton()
					);
			break;
			case DHL.SITE.FMS_SHOWREGISTRATION.EXCEPTION_CNMODEL_OFFLINE:
				this.objMessageBox.alert(
					objShowRegistration.getTitle(),
					objShowRegistration.getMessage()
				);
			break;
			default:
				//do nothing
				this.objMessageBox.alert(
					"An error occured, please try again later. "
				);
		}
	}
}

	
PRIVATE.sendToPrivate = function (objShowRegistration) {
	if(objShowRegistration.isSendPrivate()) {
		this.ptCallback(this);	
	}
	else{
		switch(objShowRegistration.getLastException()) {
			case DHL.SITE.FMS_SHOWREGISTRATION.EXCEPTION_REQUIREAPRIVATE :
				objShowRegistration.setShowType("DHL_FMS_SHOW::PRIVATE");
				objShowRegistration.registerShow();
			break;
			case DHL.SITE.FMS_SHOWREGISTRATION.EXCEPTION_INFEATURE :
				objShowRegistration.setShowType("DHL_FMS_SHOW::FEATURED");
				objShowRegistration.registerShow();
			break;
			case DHL.SITE.FMS_SHOWREGISTRATION.EXCEPTION_ALREADYINPRIVATE :
				objShowRegistration.setShowType("DHL_FMS_SHOW::SEMIPRIVATE");
				objShowRegistration.registerShow();
			break;
			case DHL.SITE.FMS_SHOWREGISTRATION.EXCEPTION_NOTENOUGHFUND :
				if(this.ptBuyCallback != null) {
					this.ptBuyCallback();
				}
				else if(redirectToBuy){
					redirectToBuy();
				}
			break;
			case DHL.SITE.FMS_SHOWREGISTRATION.EXCEPTION_REQUIRE_USER:
				if(this.ptResponseCallback != null) {
					this.ptResponseCallback();
				} else if(typeof redirectToRegistration != 'undefined') {
					redirectToRegistration();
				} else if(typeof redirectToRegister != 'undefined') {
					redirectToRegister();
				} 
			break;
			case DHL.SITE.FMS_SHOWREGISTRATION.EXCEPTION_CNMODEL_OFFLINE:
				parent.document.location = parent.document.location;
			break;
		}
	}
}
