Figment.Import("Disney.WDPRO.IBC.GuestServices",Figment.getJSRoot() + "modules/");
Figment.Import("Figment.EventHandler",Figment.getJSRoot() + "_framework/");

Figment.Namespace("Disney.WDPRO.IBC.GuestServices.Plugins.SkipStep");

Disney.WDPRO.IBC.GuestServices.Plugins.SkipStep = {
	CONSTANTS: {
		PLUGIN_ID: "GuestServices_SkipStep_PlugIn",
		SKIPSTEP_ACTION_BUTTON_ID: "guest_services_skipstep_action_button",
		PLUGIN_STATE_CLASS: "guest_services_skipstep_plugin_state",
		DEFAULT_STATE: "skipstep"
	},
	
	getClassName: function()
	{
		return "Disney.WDPRO.IBC.GuestServices.Plugins.SkipStep";
	},
	
	setToDefaultState: function()
	{
		Disney.WDPRO.IBC.GuestServices.Plugins.SkipStep.setToState(Disney.WDPRO.IBC.GuestServices.Plugins.SkipStep.CONSTANTS.DEFAULT_STATE);
	},
	
	setToState: function(state)
	{
		Disney.WDPRO.IBC.GuestServices.changeState(state, YAHOO.util.Dom.getElementsByClassName(Disney.WDPRO.IBC.GuestServices.Plugins.SkipStep.CONSTANTS.PLUGIN_STATE_CLASS));
	},
	
	getPluginElement: function()
	{
		return document.getElementById(Disney.WDPRO.IBC.GuestServices.Plugins.SkipStep.CONSTANTS.PLUGIN_ID);
	},
	
	skip: function(sourceName)
	{
		Disney.WDPRO.IBC.GuestServices.Plugins.SkipStep._sendEvent([], true, "skipstep", sourceName);
		Disney.WDPRO.IBC.GuestServices.Shared.logger.debug("Skip this Step!");
	},
	
	_sendEvent: function(errors, result, eventName, sourceName)
	{
		var eventResponse = new Disney.WDPRO.IBC.GuestServices.Event();
		eventResponse.setEvent(eventName);
		eventResponse.setSource(sourceName);
		eventResponse.setErrors(errors);
		eventResponse.setResult(result);
		Disney.WDPRO.IBC.GuestServices.Shared.logger.debug("Sending event: " + eventResponse.toString());
		Disney.WDPRO.IBC.GuestServices.dispatchEvent(eventResponse);
	},
	
	_buttonEvent: function(e)
	{
		var windowEvent = Figment.EventHandler.getEvent(e);
		
		var strHBXPageViewCode = Disney.WDPRO.IBC.GuestServices.getHBXPNCode(windowEvent);
		var strHBXMLCCode = Disney.WDPRO.IBC.GuestServices.getHBXMLCCode(windowEvent);
		var strSCPNCode = Disney.WDPRO.IBC.GuestServices.getSCPNCode(windowEvent);
		var strSCHierCode = Disney.WDPRO.IBC.GuestServices.getSCHierCode(windowEvent);
		if (strHBXPageViewCode !== null && strHBXMLCCode !== null){
			Disney.WDPRO.IBC.GuestServices.EVENT_HBX_Event_PageView(strHBXPageViewCode,strHBXMLCCode,strSCPNCode,strSCHierCode);
		}
		
		var sourceName = Disney.WDPRO.IBC.GuestServices.getSourceName();
		Disney.WDPRO.IBC.GuestServices.Plugins.SkipStep.skip(sourceName);
	},
	
	main: function()
	{
		Disney.WDPRO.IBC.GuestServices.registerPlugin(Disney.WDPRO.IBC.GuestServices.Plugins.SkipStep);
		var button = YAHOO.util.Dom.get(Disney.WDPRO.IBC.GuestServices.Plugins.SkipStep.CONSTANTS.SKIPSTEP_ACTION_BUTTON_ID);
		if(button !== null)
		{
			YAHOO.util.Dom.addClass(button, Disney.WDPRO.IBC.GuestServices.CONSTANTS.PREVENT_ASYNC_FROM_PLEASEWAIT);
			YAHOO.util.Event.addListener(button, "click", Disney.WDPRO.IBC.GuestServices.Plugins.SkipStep._buttonEvent);
		}
	}
};

Figment.EntryPoint.add(Disney.WDPRO.IBC.GuestServices.Plugins.SkipStep);
