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',
	
	CONST_NEXTGEN_ID: 'nextGenMenu',
	
	CONST_PARKS_BUTTON_ID: 'parksMenuAction',
	CONST_PARKSMENU_BUTTON_ID: 'parksMenu',
	CONST_PTS_BUTTON_ID: 'ptsMenuAction',
	CONST_PTSMENU_BUTTON_ID: 'ptsMenu',
	CONST_TTD_BUTTON_ID: 'ttdMenuAction',
	CONST_TTDMENU_BUTTON_ID: 'ttdMenu',	
	CONST_WTE_BUTTON_ID: 'wteMenuAction',
	CONST_WTEMENU_BUTTON_ID: 'wteMenu',
	CONST_TNP_BUTTON_ID: 'tnpMenuAction',
	CONST_TNPMENU_BUTTON_ID: 'tnpMenu',
	/**
	 * 
	 */
	OBSERVER: null,
	
	/**
	 * 
	 */
	attachEvents: function()
	{
		var loginBtn = null;
		var registerBtn = null;
		var logoutBtn = null;
		var printBtn = null;
		var parksBtn = null;
		var parksMenuBtn = null;
		var ptsBtn = null;
		var ptsMenuBtn = null;
		var ttdBtn = null;
		var ttdMenuBtn = null;
		var wteBtn = null;
		var wteMenuBtn = null;
		var tnpBtn = null;
		var tnpMenuBtn = 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);
		}

		parksBtn = document.getElementById(Disney.WDPRO.IBC.UI.Header.CONST_PARKS_BUTTON_ID);
		if(parksBtn !== null )
		{
			Figment.EventHandler.addEvent(parksBtn,'mouseover',Disney.WDPRO.IBC.UI.Header.EVENT_parksBtn_onMouseOver);
			Figment.EventHandler.addEvent(parksBtn,'mouseout',Disney.WDPRO.IBC.UI.Header.EVENT_parksBtn_onMouseOut);
		}				
		parksMenuBtn = document.getElementById(Disney.WDPRO.IBC.UI.Header.CONST_PARKSMENU_BUTTON_ID);
		if(parksMenuBtn !== null)
		{
			Figment.EventHandler.addEvent(parksMenuBtn,'mouseover',Disney.WDPRO.IBC.UI.Header.EVENT_parksBtn_onMouseOver);
			Figment.EventHandler.addEvent(parksMenuBtn,'mouseout',Disney.WDPRO.IBC.UI.Header.EVENT_parksBtn_onMouseOut);
		}

		ptsBtn = document.getElementById(Disney.WDPRO.IBC.UI.Header.CONST_PTS_BUTTON_ID);
		if(ptsBtn !== null)
		{
			Figment.EventHandler.addEvent(ptsBtn,'mouseover',Disney.WDPRO.IBC.UI.Header.EVENT_ptsBtn_onMouseOver);
			Figment.EventHandler.addEvent(ptsBtn,'mouseout',Disney.WDPRO.IBC.UI.Header.EVENT_ptsBtn_onMouseOut);
		}
		ptsMenuBtn = document.getElementById(Disney.WDPRO.IBC.UI.Header.CONST_PTSMENU_BUTTON_ID);
		if(ptsMenuBtn !== null)
		{
			Figment.EventHandler.addEvent(ptsMenuBtn,'mouseover',Disney.WDPRO.IBC.UI.Header.EVENT_ptsBtn_onMouseOver);
			Figment.EventHandler.addEvent(ptsMenuBtn,'mouseout',Disney.WDPRO.IBC.UI.Header.EVENT_ptsBtn_onMouseOut);
		}
		ttdBtn = document.getElementById(Disney.WDPRO.IBC.UI.Header.CONST_TTD_BUTTON_ID);
		if(ttdBtn !== null)
		{
			Figment.EventHandler.addEvent(ttdBtn,'mouseover',Disney.WDPRO.IBC.UI.Header.EVENT_ttdBtn_onMouseOver);
			Figment.EventHandler.addEvent(ttdBtn,'mouseout',Disney.WDPRO.IBC.UI.Header.EVENT_ttdBtn_onMouseOut);
		}
		ttdMenuBtn = document.getElementById(Disney.WDPRO.IBC.UI.Header.CONST_TTDMENU_BUTTON_ID);
		if( ttdMenuBtn !== null)
		{
			Figment.EventHandler.addEvent(ttdMenuBtn,'mouseover',Disney.WDPRO.IBC.UI.Header.EVENT_ttdBtn_onMouseOver);
			Figment.EventHandler.addEvent(ttdMenuBtn,'mouseout',Disney.WDPRO.IBC.UI.Header.EVENT_ttdBtn_onMouseOut);
		}
		wteBtn = document.getElementById(Disney.WDPRO.IBC.UI.Header.CONST_WTE_BUTTON_ID);
		if(wteBtn !== null)
		{
			Figment.EventHandler.addEvent(wteBtn,'mouseover',Disney.WDPRO.IBC.UI.Header.EVENT_wteBtn_onMouseOver);
			Figment.EventHandler.addEvent(wteBtn,'mouseout',Disney.WDPRO.IBC.UI.Header.EVENT_wteBtn_onMouseOut);
		}
		wteMenuBtn = document.getElementById(Disney.WDPRO.IBC.UI.Header.CONST_WTEMENU_BUTTON_ID);
		if( wteMenuBtn !== null)
		{
			Figment.EventHandler.addEvent(wteMenuBtn,'mouseover',Disney.WDPRO.IBC.UI.Header.EVENT_wteBtn_onMouseOver);
			Figment.EventHandler.addEvent(wteMenuBtn,'mouseout',Disney.WDPRO.IBC.UI.Header.EVENT_wteBtn_onMouseOut);
		}
		tnpBtn = document.getElementById(Disney.WDPRO.IBC.UI.Header.CONST_TNP_BUTTON_ID);
		if(tnpBtn !== null)
		{
			Figment.EventHandler.addEvent(tnpBtn,'mouseover',Disney.WDPRO.IBC.UI.Header.EVENT_tnpBtn_onMouseOver);
			Figment.EventHandler.addEvent(tnpBtn,'mouseout',Disney.WDPRO.IBC.UI.Header.EVENT_tnpBtn_onMouseOut);
		}
		tnpMenuBtn = document.getElementById(Disney.WDPRO.IBC.UI.Header.CONST_TNPMENU_BUTTON_ID);
		if( tnpMenuBtn !== null)
		{
			Figment.EventHandler.addEvent(tnpMenuBtn,'mouseover',Disney.WDPRO.IBC.UI.Header.EVENT_tnpBtn_onMouseOver);
			Figment.EventHandler.addEvent(tnpMenuBtn,'mouseout',Disney.WDPRO.IBC.UI.Header.EVENT_tnpBtn_onMouseOut);
		}		
		// Cleanup after ourselves
		delete loginBtn;
		delete logoutBtn;
		delete printBtn;
		
		delete parksBtn;
		delete parksMenuBtn;
		delete ptsBtn;
		delete ptsMenuBtn;
		delete ttdBtn;
		delete ttdMenuBtn;
		delete wteBtn;
		delete wteMenuBtn;
		delete tnpBtn;
		delete tnpMenuBtn;
	},
	/**
	 *
	 */
	nextgenMenu: function(topID, subID, bkpos, bkcolor, isSelect)
	{
		var el = document.getElementById(Disney.WDPRO.IBC.UI.Header.CONST_NEXTGEN_ID);
		if(el !== null){
			el.style.backgroundPosition = bkpos;
			var elTop = document.getElementById(topID);			
			elTop.style.color = bkcolor;
			var menuEl = document.getElementById(subID);
			if(menuEl !== null){
				if(isSelect){
					menuEl.style.display='';
					menuEl.style.visibility='visible';
				}
				else{
					menuEl.style.display='none';
					menuEl.style.visibility='hidden';
				}
			}
		}	
	},
	/**
	 * 
	 */
	EVENT_parksBtn_onMouseOver: function(evt)
	{
		Disney.WDPRO.IBC.UI.Header.nextgenMenu(Disney.WDPRO.IBC.UI.Header.CONST_PARKS_BUTTON_ID, 
		                                       Disney.WDPRO.IBC.UI.Header.CONST_PARKSMENU_BUTTON_ID,
		                                       "0px -675px","#ffffff",true);
	},
	EVENT_parksBtn_onMouseOut: function(evt)
	{
		Disney.WDPRO.IBC.UI.Header.nextgenMenu(Disney.WDPRO.IBC.UI.Header.CONST_PARKS_BUTTON_ID,
		                                       Disney.WDPRO.IBC.UI.Header.CONST_PARKSMENU_BUTTON_ID,
		                                       "0px -735px","#056287",false);
	},
	EVENT_ptsBtn_onMouseOver: function(evt)
	{
		Disney.WDPRO.IBC.UI.Header.nextgenMenu(Disney.WDPRO.IBC.UI.Header.CONST_PTS_BUTTON_ID, 
		                                       Disney.WDPRO.IBC.UI.Header.CONST_PTSMENU_BUTTON_ID,
		                                       "0px -615px","#ffffff",true);
	},
	EVENT_ptsBtn_onMouseOut: function(evt)
	{
		Disney.WDPRO.IBC.UI.Header.nextgenMenu(Disney.WDPRO.IBC.UI.Header.CONST_PTS_BUTTON_ID,
		                                       Disney.WDPRO.IBC.UI.Header.CONST_PTSMENU_BUTTON_ID,
		                                       "0px -735px","#056287",false);
	},

	EVENT_ttdBtn_onMouseOver: function(evt)
	{
		Disney.WDPRO.IBC.UI.Header.nextgenMenu(Disney.WDPRO.IBC.UI.Header.CONST_TTD_BUTTON_ID, 
		                                       Disney.WDPRO.IBC.UI.Header.CONST_TTDMENU_BUTTON_ID,
		                                       "0px -555px","#ffffff",true);
	},
	EVENT_ttdBtn_onMouseOut:function (evt)
	{
		Disney.WDPRO.IBC.UI.Header.nextgenMenu(Disney.WDPRO.IBC.UI.Header.CONST_TTD_BUTTON_ID,
		                                       Disney.WDPRO.IBC.UI.Header.CONST_TTDMENU_BUTTON_ID,
		                                       "0px -735px","#056287",false);
	},
	EVENT_wteBtn_onMouseOver: function (evt)
	{
		Disney.WDPRO.IBC.UI.Header.nextgenMenu(Disney.WDPRO.IBC.UI.Header.CONST_WTE_BUTTON_ID,
		                                       Disney.WDPRO.IBC.UI.Header.CONST_WTEMENU_BUTTON_ID,
		                                       "0px -495px","#ffffff",true);
	},
	EVENT_wteBtn_onMouseOut: function (evt)
	{
		Disney.WDPRO.IBC.UI.Header.nextgenMenu(Disney.WDPRO.IBC.UI.Header.CONST_WTE_BUTTON_ID,
		                                       Disney.WDPRO.IBC.UI.Header.CONST_WTEMENU_BUTTON_ID,
		                                       "0px -735px","#056287",false);
	},
	EVENT_tnpBtn_onMouseOver: function (evt)
	{
		Disney.WDPRO.IBC.UI.Header.nextgenMenu(Disney.WDPRO.IBC.UI.Header.CONST_TNP_BUTTON_ID,
		                                       Disney.WDPRO.IBC.UI.Header.CONST_TNPMENU_BUTTON_ID,
		                                       "0px -435px","#ffffff",true);
	},
	EVENT_tnpBtn_onMouseOut :function (evt)
	{
		Disney.WDPRO.IBC.UI.Header.nextgenMenu(Disney.WDPRO.IBC.UI.Header.CONST_TNP_BUTTON_ID,
		                                       Disney.WDPRO.IBC.UI.Header.CONST_TNPMENU_BUTTON_ID,
		                                       "0px -735px","#056287",false);
	},
	/**
	 * 
	 */
	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 );

