/* ocms.videoPlayer */

(function () {
	if (typeof OCMS === "undefined") {
		/* OCMS becomes a global var */
		OCMS = {};
	}	

	OCMS.videoPlayer = function () {
	
		// arguments
		//	an object: use to extend default settings
		//	or
		//	if arguments[0] is a string, use it as swfUrl
		//		and if [1] and [2] exist, treat as numeric width and height
		
		// examples used by lumineers.com for streaming
		//	videoSWF: 			http://swfmachine.com/players/jw/player.swf
		//	flashvars.streamer: rtmp://mmpros.rtmphost.com/zz100266
		//	flashvars.file: 	IHMD_120_BLANK.flv

		// http://www.longtailvideo.com/support/forums/jw-player/setup-issues-and-embedding/8266/how-to-hide-the-fullscreen-button
		// "allowFullscreen" is a a parameter for the flash plugin
		// so.addParam("allowFullscreen", "true")
		// "usefullscreen" is a flashvar
		// so.addVariable("usefullscreen", "false")
		
		// http://code.google.com/p/swfobject/
		var settings = {
			swfUrl: 	'',
			id:			'ocmsVideoPlayer',
			width:		400,
			height:		300,
			version:	'9.0.0',
			expressInstallSwfurl: '',	// e.g. expressInstall.swf, but where?
			flashvars:	{
				wmode: 				'opaque',
				autostart:			'false',
				usefullscreen:	 	'true',
				allowscriptaccess: 	'always'
			},
			params:		{
				allowFullScreen: 	'true'	// distinct from flashvars' usefullscreen (and req'd)
			},
			attributes:	{
			},
			callbackFn:	null
		}
	
		// install site-wide default settings before letting arguments to
		// this call possibly override those
		$.extend(true, settings, OCMS.g_videoPlayerDefaultSiteSettings);
	
		if (arguments.length) {
			if (typeof arguments === 'object') {
				$.extend(true, settings, arguments[0]);
			} else if (typeof arguments[0] === 'string') {
				settings.swfUrl = arguments[0];
				settings.width = arguments[1] || settings.width;
				settings.height = arguments[2] || settings.height;
			}
		
			if (settings.flashvars.streamer && settings.sourceRef.toLowerCase().indexOf('.swf') < 0) {
				if (!settings.flashvars.file) {
					settings.flashvars.file = settings.sourceRef;
				}			
			} else {
				settings.swfUrl = settings.sourceRef;
			}
		
			if (typeof settings.swfUrl === 'string' && settings.swfUrl.length) {
				swfobject.embedSWF(
					settings.swfUrl,
					settings.id, 
					settings.width,
					settings.height,
					settings.version, 		// last required parameter
					settings.expressInstallSwfurl, 
					settings.flashvars,
					settings.params,		// for the embedded object
					settings.attributes,	// for the embedded object
					settings.callbackFn
				);
			}
		}
		
		return settings;
	};	// OCMS.videoPlayer

	
	OCMS.playVideo = function (evt) {
		var myArgs = {},
			dataSettings = {},
			vpSettings = {};
			
		evt.stopPropagation();	// top stop original a click, one hopes
						
//		<a href="testFlash.flv" class="ocmsVideo" data-video="{width: 200, height: 150, astring: how do I do this?, flashvars: {autostart: true}}">I&rsquo;m a movie test!</a>
		var v = $(this).attr('data-video');
		if (v && v.length) {
			// in source string:
			//	- space required after attribute name {name: value}
			//	- values with non A-Za-z_ chars must provide their own wrapping "
			//		- so that includes URLs
			
// attempt to do file: value all in one - postponed			
//			v = v.replace(/(file|streamer): (.+)?(,|\})/gi, '"$1": "$2"$3');

			v = v.replace(/(\w+): /gi, '"$1": ');
			v = v.replace(/:\s+(\w+)(,|\})/gi, ': "$1"$2');

			try {
				dataSettings = $.parseJSON(v);
			} catch (ex) {
				if (typeof console === 'object') {
					console.log(ex);
				}
			}

			$.extend(true, myArgs, dataSettings);
		}
		
		OCMS.createDefaultVideoContainer();
		
		myArgs.sourceRef = $(this).attr('href');
		
		// vpSettings tells us what was actually used (but nothing about success or failure)
		vpSettings = OCMS.videoPlayer(myArgs);
		$('#ocmsVideoCurtain').fadeIn(400);
		$('#ocmsVideoContainer').css({
			width: vpSettings.width, 
			height: vpSettings.height,
			left: ($('body').width() - vpSettings.width) / 2
		}).fadeIn(600);
		
		return false;	// top stop original a click, I hope
	};	// OCMS.playVideo

	OCMS.g_videoPlayerDefaultSiteSettings = {
//		swfUrl: 	'http://swfmachine.com/players/jw/player.swf',
//		flashvars: {
//			streamer: 'rtmp://mmpros.rtmphost.com/zz100266'
//		streamer: 'rtmp://video.denmat.com'
//		}
	};
	
	OCMS.createDefaultVideoContainer = function () {
		// does the creation of this fail in OCMS Preview?
		if ($('#ocmsVideoContainer').length === 0) {
			// if here, there's no default content in the #ocmsVideoPlayer
			$('body').append('<div id="ocmsVideoCurtain"></div><div id="ocmsVideoContainer"><div id="ocmsVideoPlayerClose"></div><div id="ocmsVideoPlayer"></div></div>');
			$('#ocmsVideoPlayerClose').click(function () {
				$('#ocmsVideoContainer, #ocmsVideoCurtain').fadeOut(200);
			});
		}
	};
	
})();

$().ready(function () {

	$('a.ocmsVideo').each(function () {
		$(this).click(OCMS.playVideo);
	});

	$('#ocmsVideoPlayerClose').click(function () {
		$('#ocmsVideoContainer').fadeOut(200);
	});

});
