/*
    Title: Disney.WDPRO.IBC.PreArrivalInterceptor.js
        Used for MDV->IBC/PreArrival connectivity. Very similar to the make-payment
        technique.

    Copyright:
        (c) 2008 Walt Disney Internet Group. All Rights Reserved.

    Original Author:
        o Michael Behan
        o Based on Disney.WDPRO.IBC.MakeAdditionalPayment.js

    Meta Info:
        o $File$
        o $Author$
        o $Revision$
        o $DateTime$

    Dependencies:
        o Figment.EventHandler.js 
        o Disney.WDPRO.IBC.UI.DynamicPleaseWait.js

    See Also:
        o TEA Template: modules/render/<preArrivalRememberRender>.tea
*/
Figment.Import('Figment.EventHandler',                  Figment.getJSRoot() + '_framework');
Figment.Import('Disney.WDPRO.IBC.UI.DynamicPleaseWait', Figment.getJSRoot() + '_global/');


// Namespace: Disney.WDPRO.IBC.PreArrivalInterceptor
Figment.Namespace('Disney.WDPRO.IBC.PreArrivalInterceptor');


/* 
    Class: Disney.WDPRO.IBC.PreArrivalInterceptor
        Reads URL from <Redirect> tag in response XML document.

    Returns:
        Target URL for redirect
*/
Disney.WDPRO.IBC.PreArrivalInterceptor = {

	/*
        Method: completeCallback
            Callback function called when async call has completed.
	        If sync call returns COMPLETE without polling, the response should contain |Redirect|.

        Todo:
            If async call returns COMPLETE during polling of statusReport, the response will NOT contain |Redirect|.
	        Another call is needed to retrieve this response.
	*/
	completeCallback: function(response)
	{
		var redirect = Disney.WDPRO.IBC.UI.DynamicPleaseWait.getFirstValueByTagName(response, 'Redirect');
		if(redirect === null || redirect === '')
		{	// No redirect in response. Go to default.
			redirect = Figment.getWebRoot() + 'en_US/_framework/components/processEngine';
		}
		window.location = redirect;
	},

    /*
        Method: main
            Initializer. Called automagically by <Figment.EntrPoint.add()>.
    */
	main: function(evt)
	{
		var objPleaseWait = new Disney.WDPRO.IBC.UI.DynamicPleaseWait.Class();
		objPleaseWait.options.ajaxProcessor = Figment.getWebRoot() + 'en_US/_framework/components/ajaxProcessor';
		objPleaseWait.setCompleteCallBack(Disney.WDPRO.IBC.PreArrivalInterceptor.completeCallback);

		// Add form parameters to the call
		var formElement = document.getElementById('preArrivalInterceptorTrigger');
		var form = Disney.WDPRO.IBC.UI.DynamicPleaseWait.findForm(formElement);
		if( form !== null )
		{
			objPleaseWait.addParametersFromForm(form);
			objPleaseWait.addParameter(formElement.name, formElement.value);

			// Fire off async call
			objPleaseWait.initiateCall();
		}

		// Clean up after ourselves
		delete formElement;
		delete form;
	}
};

// Initialize our PreArrivalInterceptor class:
Figment.EntryPoint.add(Disney.WDPRO.IBC.PreArrivalInterceptor);


