
/**
* @desc: Switches the player depending on browser capabilities
* and the availability of h.264 encoded videos
* @dependecies: jQuery, swfObject
*/

var videoObject = function(params)
{
	var parent 					= 	this;
	this.hasH264 				= 	params.hasH264 || 0;
	this.support 				= 	params.support;
	this.video 					= 	params.video;
	this.videoPath	 			= 	params.videoPath;
	this.videoPlayerSrc 		= 	params.videoPlayerSrc;
	this.videoSrc 				= 	params.videoSrc;
	this.videoPlayerControlsSrc	= 	params.videoPlayerControlsSrc;
	this.videoHeight 			= 	params.videoHeight;
	this.videoWidth 			= 	params.videoWidth;
	this.videoID 				= 	params.videoID;
	this.fileType 				= 	params.fileType;
	this.videoPoster 			= 	params.videoPoster;
	this.source 				= 	params.source;
	this.extention 				= 	params.extention;
	this.base 					= 	params.base;
	this.hasIntro				= 	params.hasIntro;
	this.hasOutro				= 	params.hasOutro;
	this.introVideoSrcHD		= 	params.introVideoSrcHD || 'no';
	this.outroVideoSrcHD		= 	params.outroVideoSrcHD || 'no';
	this.introVideoSrcSD		= 	params.introVideoSrcSD || 'no';
	this.outroVideoSrcSD		= 	params.outroVideoSrcSD || 'no';
	this.container				= 	params.container;
	this.loopAtEnd				=	params.loopAtEnd;
	this.hasCaption				=	params.hasCaption;
	this.captionOptions			=	params.captionOptions;
	this.autoplay				= params.autoplay;
	this.preload				= params.prelaod;

	this.play =
	{
		flash	: 	function()
					{
						var flashvars =
						{
							animationID		:	parent.videoID,
							path			: 	parent.videoPath,
							ext				: 	parent.extention,
							controls		: 	parent.videoPlayerControlsSrc,
							hasIntro		: 	parent.hasIntro,
							hasOutro		: 	parent.hasOutro,
							introVideoSrc	: 	(parent.hasH264 == 1) ? parent.introVideoSrcHD : parent.introVideoSrcSD,
							outroVideoSrc	: 	(parent.hasH264 == 1) ? parent.outroVideoSrcHD : parent.outroVideoSrcSD,
							captionsource	:	parent.captionsource,
							captionDefaultMode: parent.captionDefaultMode,
							hasCaption		:	parent.hasCaption,
							captionOptions	:	parent.captionOptions,
							loopAtEnd		:	parent.loopAtEnd,
							autoplay		: parent.autoplay
						};

						var params =
						{
							base				:	parent.base,
							bgcolor				:	'#000000',
							allowfullscreen		:	'true',
							wmode				:	'transparent',
							quality				:	'high',
							allowscriptaccess	:	'sameDomain',
							menu				:	'false',
							play				:	'true',
							loop				:	'false'
						};

						var attributes =
						{
							id		: 	parent.videoID,
							name	: 	'playerWithTimerSD'
						};

						swfobject.embedSWF(
							parent.videoPlayerSrc +'?player_id='+ Math.random(),
							parent.container,
							parent.videoWidth,
							parent.videoHeight,
							'9.0.0',
							false,
							flashvars,
							params,
							attributes
							);
					},

		html5	: 	function()
					{
						var src = parent.videoSrc

						if( parent.play.intro() )
							src = parent.play.intro();

						$(parent.video).attr({
							controls	:	'true',
							preload		: 	parent.preload || 'none',
							height		: 	parent.videoHeight,
							width		: 	parent.videoWidth,
							poster		: 	parent.videoPoster,
							id			: 	'new video',
							src			: 	src
						});

						if( parent.autoplay == 'yes' )
							$(parent.video).attr({autoplay: 'true'});

						$('#'+ parent.container)
						.html(parent.video);

						/*
						$(window)
						.bind('unload', function()
						{
							$('#'+ parent.container).stopTime('rm');
							$.post('ajax/rm.php',
							{
								snt		:	'true',
								name	:	parent.tempFileName
							});
						});

						//if( !parent.play.intro() )
							//parent.rm();
						*/
					},

		able	: 	function()
					{
						if( typeof HTMLVideoElement != 'undefined' )
							parent.support = parent.video.canPlayType(parent.fileType);
						if( (parent.support != 'probably' && parent.support != 'maybe')
							|| !parent.video.play
							|| parent.hasH264 == 0 )
							return false;
						return true;
					},

		intro	: 	function()
					{
						if( parent.hasIntro == 'yes' && parent.introVideoSrcHD != false && parent.hasH264 == 1)
							return parent.introVideoSrcHD;
						else if( parent.hasIntro == 'yes' && parent.introVideoSrcSD != false && parent.hasH264 == 0 )
							return parent.introVideoSrcSD;
						return false;
					},

		outro	: 	function()
					{
						if( parent.hasOutro == 'yes' && parent.outroVideoSrcHD != false && parent.hasH264 == 1 )
							return parent.outroVideoSrcHD;
						else if( parent.hasOutro == 'yes' && parent.outroVideoSrcSD != false && parent.hasH264 == 0 )
							return parent.outroVideoSrcSD;
						return false;
					},

		onEnded: 	function()
					{
						$(parent.video)
						.bind('ended', function()
						{
							if( /intro/.test($(parent.video).attr('src')) )
							{
								$(parent.video).attr('src', parent.videoSrc);
								parent.video.load();
								parent.video.play();
								//parent.rm();
							}
							else if( !/outro/.test($(parent.video).attr('src'))
								&& !/intro/.test($(parent.video).attr('src'))
								&& parent.play.outro())
							{
								$(parent.video).attr('src', parent.play.outro());
								parent.video.load();
								parent.video.play();
							}
							else
							{
								if( parent.play.intro() )
									$(parent.video).attr('src', parent.play.intro());
								else
									$(parent.video).attr('src', parent.videoSrc);
								parent.video.load();
								if( parent.loopAtEnd == 'yes' )
									parent.video.play();
								else
									parent.video.pause();
							}
						});
					}
	};

	/*this.rm = function()
	{
		$('#'+ parent.container)
		.everyTime(1000, 'rm', function()
		{
			if( !parent.video.paused && parent.video.canplaythrough )
			{
				$(this).stopTime('rm');
				$(this)
				.oneTime(2000, 'extra', function()
				{
					$('#global-load-message-wrapper')
					.ajaxSend(function()
					{
						$(this).hide();
					});

					$.post('ajax/rm.php',
					{
						snt		:	'true',
						name	:	parent.tempFileName
					});
				});
			}
		}, 0);
	};*/

	if( !this.play.able() )
		this.play.flash();
	else
		this.play.html5();
	this.play.onEnded();
};


