/**
* @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.tempFileName 			= 	params.tempFileName;
	this.source 				= 	params.source;
	this.extention 				= 	params.extention;
	this.base 					= 	params.base;
	this.hasIntro				= 	params.hasIntro;
	this.hasOutro				= 	params.hasOutro;
	this.introVideoSrcHD		= 	params.introVideoSrcHD || false;
	this.outroVideoSrcHD		= 	params.outroVideoSrcHD || false;
	this.introVideoSrcSD		= 	params.introVideoSrcSD || false;
	this.outroVideoSrcSD		= 	params.outroVideoSrcSD || false;
	this.container				= 	params.container;
	this.demo					=	params.demo;
	this.videoSkin				=	params.videoSkin;
	this.autoPlay				=	params.autoPlay;
	this.siteSkinPath			=	params.siteSkinPath;
	this.overlay				=	params.overlay

	this.play =
	{
		flash	: 	function()
					{
						var flashvars =
						{
							animationID	:	parent.videoID,
							path		: 	parent.videoPath,
							ext			: 	parent.extention,
							controls	: 	parent.videoPlayerControlsSrc,
							hasIntro	: 	parent.hasIntro,
							hasOutro	: 	parent.hasOutro,
							intro		: 	(parent.hasH264 == 1) ? parent.introVideoSrcHD : parent.introVideoSrcSD,
							outro		: 	(parent.hasH264 == 1) ? parent.outroVideoSrcHD : parent.outroVideoSrcSD,
							siteSkinPath:	parent.siteSkinPath,
							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	: 	'playerWithTimerTest'
						};

						swfobject.embedSWF(
							parent.videoPlayerSrc,
							parent.container,
							parent.videoWidth,
							parent.videoHeight,
							'9.0.0',
							false,
							flashvars,
							params,
							attributes
							);
					},

		flashDemo	: 	function()
					{
						var flashvars =
						{
							demoSkin	:	parent.videoSkin,
							demoPoster	: 	parent.videoPoster,
							demoVideo	: 	parent.videoSrc,
							demoControls: 	parent.videoPlayerControlsSrc,
							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	: 	'Demo'
						};

						swfobject.embedSWF(
							parent.videoPlayerSrc,
							parent.container,
							parent.videoWidth,
							parent.videoHeight,
							'9.0.0',
							false,
							flashvars,
							params,
							attributes
							);
					},

		html5	: 	function()
					{
						var src = (parent.play.intro() ? parent.videoPath + parent.siteSkinPath + parent.play.intro() : parent.videoPath + parent.videoSrc);

						if( parent.videoHeight == 307 )
							parent.videoHeight = 270;

						$(parent.video).attr({
							controls	:	'true',
							height		: 	parent.videoHeight,
							width		: 	parent.videoWidth,
							poster		: 	parent.videoPath + parent.videoPoster,
							id			: 	'video',
							src			: 	src,
							type		:	parent.fileType,
							preload : 'metadata'
						});

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

						$('#'+ parent.container)
						.css({
							width	: 	parent.videoWidth,
							height	: 	parent.videoHeight,
							margin	: 	'0 auto'
						})
						.html(parent.video);

						$(window)
						.bind('unload', function()
						{
							$('#'+ parent.container).stopTime('rm');
							parent.rm();
						});

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

		able	: 	function()
					{
						// Skip IE9
						var user_agent = navigator.userAgent.toLowerCase();
                		if( user_agent.indexOf('msie 9.0') > -1 )
                			return false;

						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.videoPath + parent.videoSrc);
								parent.video.load();
								parent.video.play();
								if( parent.demo != 1 )
									parent.rm();
							}
							else if( !/outro/.test($(parent.video).attr('src'))
								&& !/intro/.test($(parent.video).attr('src'))
								&& parent.play.outro())
							{
								$(parent.video).attr('src', parent.videoPath + parent.siteSkinPath + parent.play.outro());
								parent.video.load();
								parent.video.play();
							}
							else
							{
								//if( parent.play.intro() )
									//$(parent.video).attr('src', parent.videoPath + parent.siteSkinPath + parent.play.intro());
								//else
									$(parent.video).attr('src', parent.videoPath + parent.videoSrc);
								parent.video.load();
								parent.video.pause();
							}
						});
					},

		overlay:	function()
					{
						if( parent.overlay == 1 )
						{
							var overlay = $('<div id="player-overlay"></div>');
							overlay
							.css({
								width: parent.videoWidth +'px',
								height: parent.videoHeight +'px',
								position: 'absolute',
								left: $('#'+ parent.container).offset().left +'px',
								top: $('#'+ parent.container).offset().top +'px',
								background: '#fff'
							});

							$('body').append(overlay);

							overlay.html('<img src="'+ parent.videoPath + parent.videoPoster +'" alt="Click to Play" id="player-poster">');
							var play_btn = $('<img src="'+ parent.videoPath +'buttons/play_btn.png" alt="Click to Play" id="play-btn">');
							overlay.append(play_btn);

							play_btn
							.css({
								position: 'absolute',
								left: (overlay.width() - 53)/2 +'px',
								top: (overlay.height() - 63)/2 +'px'
							});

							overlay.click(function()
							{
								$(this).fadeOut('fast', function()
								{
									$(this).remove();
								});
								parent.video.play();
							});

							play_btn.click(function()
							{
								overlay.trigger('click');
							});
						}
					}
	};


	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() )
	{
		if( this.demo == 0 )
			this.play.flash();
		else
			this.play.flashDemo();
	}
	else
	{
		this.play.html5();
		this.play.overlay();
		this.play.onEnded();
	}
};

