Figment.Import( 'Figment.EventHandler',Figment.getJSRoot() + '_framework/' );
Figment.Import( 'Figment.DOM',Figment.getJSRoot() + '_framework/' );

/**
 * @fileoverview	
 * @version		1.0.0
 */
Figment.Namespace( 'Disney.WDPRO.IBC.UI.Header' );

// Break out of frames.  This is needed to kill the MDV frameset.
if (parent != self) parent.location.href = location.href;
// end frames hack

Disney.WDPRO.IBC.UI.Header = {
	CONST_LOGIN_BUTTON_ID: 'logIn',
	CONST_REGISTER_BUTTON_ID: 'register',
	CONST_LOGOUT_BUTTON_ID: 'logOut',
	CLASSNAME_SHOW_STATE: 'inlineLogin_Show',
	CLASSNAME_HIDE_STATE: 'inlineLogin_Hide',
	CONST_PRINT_BUTTON_ID: 'printIcon',
	/**
	 * 
	 */
	OBSERVER: null,
	
	/**
	 * 
	 */
	attachEvents: function()
	{
		var loginBtn = null;
		var registerBtn = null;
		var logoutBtn = null;
		var printBtn = null;
		
		if( Figment.doesClassExist("Disney.WDPRO.IBC.GuestServices") )
		{
			loginBtn = document.getElementById(Disney.WDPRO.IBC.UI.Header.CONST_LOGIN_BUTTON_ID);
			if( loginBtn !== null )
			{
				Figment.EventHandler.addEvent(loginBtn,'click',Disney.WDPRO.IBC.UI.Header.EVENT_loginButton_onClick);
			}
			registerBtn = document.getElementById(Disney.WDPRO.IBC.UI.Header.CONST_REGISTER_BUTTON_ID);
			if( registerBtn !== null )
			{
				Figment.EventHandler.addEvent(registerBtn,'click',Disney.WDPRO.IBC.UI.Header.EVENT_loginButton_onClick);
			}
			logoutBtn = document.getElementById(Disney.WDPRO.IBC.UI.Header.CONST_LOGOUT_BUTTON_ID);
			if( logoutBtn !== null )
			{
				Figment.EventHandler.addEvent(logoutBtn,'click',Disney.WDPRO.IBC.UI.Header.EVENT_logoutButton_onClick);
			}
		}
		printBtn = document.getElementById(Disney.WDPRO.IBC.UI.Header.CONST_PRINT_BUTTON_ID);
		if( printBtn !== null )
		{
			Figment.EventHandler.addEvent(printBtn,'click',Disney.WDPRO.IBC.UI.Header.EVENT_printBtn_onClick);
		}
		
		// Cleanup after ourselves
		delete loginBtn;
		delete logoutBtn;
		delete printBtn;
	},
	
	/**
	 * 
	 */
	EVENT_printBtn_onClick: function(evt)
	{
		var windowEvent = Figment.EventHandler.getEvent(evt);
		var element = windowEvent.element;
		
		window.print();
		windowEvent.stopEvents();
		
		// Cleanup after ourselves
		Figment.EventHandler.cleanUp(windowEvent);
		delete element;
	},
	
	/**
	 * 
	 */
	EVENT_loginButton_onClick: function(evt)
	{
		var windowEvent = Figment.EventHandler.getEvent(evt);
		var element = windowEvent.element;
		
		var plugins = element.getAttribute(Disney.WDPRO.IBC.GuestServices.CONSTANTS.CALLER_ELEMENT_PLUGIN_ATTRIBUTE_NAME);
		if(plugins === null)
		{
			element.setAttribute(Disney.WDPRO.IBC.GuestServices.CONSTANTS.CALLER_ELEMENT_PLUGIN_ATTRIBUTE_NAME,"login,register");
		}
		Disney.WDPRO.IBC.GuestServices.open(element,"header");
	},
	
	/**
	 * 
	 */
	EVENT_logoutButton_onClick: function(evt)
	{
		var windowEvent = Figment.EventHandler.getEvent(evt);
		Disney.WDPRO.IBC.GuestServices.Plugins.Login.logout("header");
		windowEvent.stopEvents();
	},
	
	/**
	 * 
	 */
	main: function(evt)
	{
		Disney.WDPRO.IBC.UI.Header.attachEvents();
		if( Figment.doesClassExist("Disney.WDPRO.IBC.GuestServices") )
		{
			Disney.WDPRO.IBC.UI.Header.OBSERVER = Disney.WDPRO.IBC.GuestServices.subscribe();
			Disney.WDPRO.IBC.UI.Header.OBSERVER.update = function(obs,response)
			{
				var loginBtn = document.getElementById(Disney.WDPRO.IBC.UI.Header.CONST_LOGIN_BUTTON_ID);
				var logoutBtn = document.getElementById(Disney.WDPRO.IBC.UI.Header.CONST_LOGOUT_BUTTON_ID);
				
				var eventName = response.getEvent().toLowerCase();
				var result = response.getResult();
				var sourceName = response.getSource();
				
				if(result && loginBtn !== null && logoutBtn !== null)
				{
					if(eventName === "login")
					{
						Figment.DOM.replaceClassName(loginBtn, Disney.WDPRO.IBC.UI.Header.CLASSNAME_SHOW_STATE, Disney.WDPRO.IBC.UI.Header.CLASSNAME_HIDE_STATE);
						Figment.DOM.replaceClassName(logoutBtn, Disney.WDPRO.IBC.UI.Header.CLASSNAME_HIDE_STATE, Disney.WDPRO.IBC.UI.Header.CLASSNAME_SHOW_STATE);
						
					}
					else if(eventName === "logout")
					{
						Figment.DOM.replaceClassName(loginBtn, Disney.WDPRO.IBC.UI.Header.CLASSNAME_HIDE_STATE, Disney.WDPRO.IBC.UI.Header.CLASSNAME_SHOW_STATE);
						Figment.DOM.replaceClassName(logoutBtn, Disney.WDPRO.IBC.UI.Header.CLASSNAME_SHOW_STATE, Disney.WDPRO.IBC.UI.Header.CLASSNAME_HIDE_STATE);
						
					}
					else if(eventName === "register" && sourceName === "header")
					{
						// REGISTER FROM HEADER REQUESTED
						if(result)
						{
							var data = response.getData();
							var birthMonth = data.get("birth_month");
							var birthDay = data.get("birth_day");
							var birthYear = data.get("birth_year");
							// Handle register of new guest
							// Spawn new workflow for Reg only (the default
							// behavior)
							window.location.href = Disney.WDPRO.IBC.GuestServices.CONSTANTS.PROCESS_ENGINE + "?process=false&workflow=" + Disney.WDPRO.IBC.GuestServices.Plugins.Register.CONSTANTS.CREATE_NEW_ACCOUNT_WORKFLOW_NAME + "&birth_month=" + birthMonth + "&birth_day=" + birthDay + "&birth_year=" + birthYear;
						}
					}
					
				}
			}
		}
	}
};

Figment.EntryPoint.add( Disney.WDPRO.IBC.UI.Header );