/**
 * @description Singleton to control the population of the overlay
 */

nikefootball.global.OverlayController = (function () {
	var _DEFAULTS = {
		overlayName					: 'video',
		pageSection					: 'content',
		guid						: null,
		locale						: GLOBAL_VARIABLES.locale,
		onShowCompleteCallback		: function () {},
		onHideCompleteCallback		: function () {}
	};

	var _overlayMappings = { "overlay-overlayvideo" : "overlayvideo" };

	var _selectorForElementToOverlay = "#page";

	var _selectorForOverlayTrigger = ".overlay-trigger";

	var _objectToOverlay = null;

	var _overlayParams = null;

	var _overlay = null;

	// PRIVATE METHODS

	function _addDispatchers() {
		JQ(_selectorForOverlayTrigger).click(
			function(e) {
				e.target = JQ(e.target);
				JQ.each(_overlayMappings,
					function (className, overlayName) {
						if (e.target.hasClass(className)) {
							e.preventDefault();
							show({overlayName: overlayName});
							return;
						}
					}
				);
			}
		);
	};
	
	function _initVars() {
		_objectToOverlay = JQ(_selectorForElementToOverlay);
		_overlayParams = {
			objectToOverlay		: _objectToOverlay,
			content				: ' '
		};
		_overlay = new nikefootball.global.Overlay(_overlayParams);
	};

	function _init() {
		_initVars();
		_addDispatchers();
	};

	// PUBLIC METHODS

	function show(params) {
		if (!params.overlayName) {
			return;
		}
		params.overlayName = params.overlayName || _DEFAULTS.overlayName;
		params.guid = params.guid || _DEFAULTS.guid;
		params.pageSection = params.pageSection || _DEFAULTS.pageSection;
		params.locale = params.locale || _DEFAULTS.locale;
		params.onShowCompleteCallback = params.onShowCompleteCallback || _DEFAULTS.onShowCompleteCallback;

		//overlayMessageURL = "/nikefootball/templates/training/modules/overlayvideo.ftl?view=" + nikefootball.GLOBAL_VARIABLES.view + "&drillName=" + params.drillName
        var overlayMessageURL = "/nikefootball/training/overlayvideo?&locale=" + params.locale;
		JQ.get(overlayMessageURL,
			function(content) {
				_overlay.setContent(content);
				_overlay.showOverlay(
					true,
					function () {
						if (params.guid !== _DEFAULTS.guid) {
							
							var flashVars = {};
							var flashParams = {};
							var flashAttributes = {};
									
							// Global
							flashVars.locale = nikefootball.GLOBAL_VARIABLES.locale;
							//flashVars.trackPageName = ">" + nikefootball.GLOBAL_VARIABLES.view.replace("/nikefootball/","").replace(/\//g,">");
									
							flashParams.wmode = "transparent";
							flashParams.scale = "noscale";
							flashParams.allowScriptAccess = "always";
							flashParams.allowFullScreen = "true";
									
							flashParams.bgColor = "";
							
							var moduleWidth = "908";
							var moduleHeight = "510";
							var moduleElement = "videoplaceholder";
							var moduleSWF = "http://www.nike.com/nikeos/global/modules/video/v1/swf/video_player_v2_0.swf";
									
							// vaild options are: 'control', 'sparq', 'speed', 'accuracy'
							flashVars.guid = params.guid;
							// replace __ with _
							flashVars.locale = nikefootball.GLOBAL_VARIABLES.locale.replace(/__/,"_");
							flashVars.regionConfig = "http://www.nike.com/nikeos/global/modules/video/v1/xml/reg/reg_config_" + nikefootball.GLOBAL_VARIABLES.locale.replace(/__/,"_") + ".xml";
							flashVars.siteConfig = "http://www.nike.com/nikefootball/global/xml/videoSiteConfig.xml";
							flashVars.currentUrl = escape(location.href);
									
							flashParams.base = "";
							flashAttributes.id = moduleElement;
							flashAttributes.name = moduleElement;
							
							//swfobject.embedSWF(moduleSWF, moduleElement, moduleWidth, moduleHeight, "9", flashParams.bgColor, flashVars, flashParams, flashAttributes);
							JQ("#" + moduleElement).videoplayer({guid: flashVars.guid, locale: flashVars.locale});
							
						}
						
						params.onShowCompleteCallback();
						JQ('html,body').animate({scrollTop: 0});
					}
				);
			}
		);
	};

	function hide() {
		if (params == undefined) {
			params = {};
		}
		params.onHideCompleteCallback = params.onHideCompleteCallback || _DEFAULTS.onHideCompleteCallback;
		_overlay.hideOverlay(undefined, params.onHideCompleteCallback);
	};

	// Constructor code
	JQ(document).ready(_init);

	// Export public methods
	return {
		show	: show,
		hide	: hide
	};

}) ();

/* EOF */
