// REQUIRES: prototype.js
// REQUIRES: khan-post-load.js
// REQUIRES: swfobject.js
// REQUIRES: AC_Quicktime.js

var video_opts = {};
var flashwmode = 'opaque';
if (navigator.userAgent.match(/Windows.*Firefox\/3\.[0-6]/i)) flashwmode = 'opaque';
var swfopts = { wmode: flashwmode, allowfullscreen: 'true', allowscriptaccess: 'always', quality: 'high', cachebusting: 'false', bgcolor: '#000000'};

function finish_generic_player(itm) {
	itm.down('img').hide();
	itm.txst_isLoaded = true;
	record_video_analytics(itm.href);
}

function click_flow_player(itm, uuid, opts) {
	video_load(itm, {controls: (opts.showcontroller ? { autoHide: 'never' } : null), autoplay: true});
}

function click_qt_player(itm, uuid, opts) {
	if (haveqt && !itm.txst_isLoaded) {
		var objhtml;
		if (navigator.userAgent.match(/Windows/i)) {
			// quicktime's wmode transparent doesn't work in windows
			objhtml = QT_GenerateOBJECTText_XHTML(opts.url , opts.width, opts.height, '',
			'autoplay', 'true',
			'controller', opts.showcontroller ? 'true' : 'false',
			'scale', 'tofit');
		} else {
			objhtml = QT_GenerateOBJECTText_XHTML(opts.url , opts.width, opts.height, '',
			'autoplay', 'true',
			'controller', opts.showcontroller ? 'true' : 'false',
			'wmode', 'transparent',
			'scale', 'tofit');
		}
		finish_generic_player(itm);
		itm.innerHTML = objhtml;
	}
}

var onYouTubePlayerReady = function(playerId) {
	playerId = unescape(playerId);
	var p = $(playerId);
	var opts = video_opts[playerId];
	if (!opts.showcontroller) {
		p.cueVideoById(opts.id);
		p.playVideo();
		p.txst_isPaused = false;
	}
}

function click_youtube_player(itm, uuid, opts) {
	if (!itm.txst_isLoaded) {
		if (opts.showcontroller) {
			swfobject.embedSWF("http://www.youtube.com/v/"+opts.id+"?"+"enablejsapi=1&hd=1&playerapiid="+uuid+"&autoplay=1&rel=0&showinfo=0&fs=1",
				uuid, opts.width, opts.height, "8", null, null, swfopts, {id: uuid});
		} else {
			swfobject.embedSWF("http://www.youtube.com/apiplayer?enablejsapi=1&hd=1&playerapiid="+uuid,
				uuid, opts.width, opts.height, "8", null, null, swfopts, {id: uuid});
		}
		finish_generic_player(itm);
	} else {
		try {
			var p = $(uuid);
			if (!opts.showcontroller) {
				if (typeof p.txst_isPaused == 'undefined') p.txst_isPaused = true;
				if (!p.txst_isPaused) { p.pauseVideo(); p.txst_isPaused = true; itm.down('img').show(); }
				else { p.playVideo(); p.txst_isPaused = false; itm.down('img').hide(); }
			}
		} catch (e) {
			// don't care
		}
	}
}

function click_vimeo_player(itm, uuid, opts) {
	if (!itm.txst_isLoaded) {
		swfobject.embedSWF("http://vimeo.com/moogaloop.swf", uuid, opts.width, opts.height, "9.0.0", "expressInstall.swf",
			{ clip_id: opts.id,
				show_portrait: 0,
				show_byline: 0,
				show_title: 0,
				autoplay: 1,
				//js_api: 1, // required in order to use the Javascript API
				js_swf_id: uuid // this will be passed into all event methods so you can keep track of multiple moogaloops (optional)
			}, // flash vars
			swfopts, // params
			{} // attributes
		);
		finish_generic_player(itm);
	}
}

function click_veoh_player(itm, uuid, opts) {
	if (!itm.txst_isLoaded) {
		swfobject.embedSWF("http://www.veoh.com/static/swf/webplayer/WebPlayer.swf", uuid, opts.width, opts.height, "9.0.0", "expressInstall.swf",
			{ permalinkId: opts.id,
				version: 'AFrontend.5.5.2.1018',
				player: 'videodetails',
				id: 'anonymous',
				videoAutoPlay: 1
			}, // flash vars
			swfopts, // params
			{} // attributes
		);
		finish_generic_player(itm);
	}
}

function click_viddler_player(itm, uuid, opts) {
	if (!itm.txst_isLoaded) {
		swfobject.embedSWF("http://www.viddler.com/simple/"+opts.id+"/", uuid, opts.width, opts.height, "9.0.0", "expressInstall.swf",
			{ 
				autoplay: 't',
				optNoTopMenu: 1,
				hidestats: 't'
			}, // flash vars
			swfopts, // params
			{} // attributes
		);
		finish_generic_player(itm);
	}
}

function click_yahoo_player(itm, uuid, opts) {
	if (!itm.txst_isLoaded) {
		swfobject.embedSWF("http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf", uuid, opts.width, opts.height, "9.0.0", "expressInstall.swf",
			{ 
				vid: opts.id,
				lang: 'en-us',
				intl: 'us',
				embed: 0,
				id: opts.secondid,
				autoplay: 1
			}, // flash vars
			swfopts, // params
			{} // attributes
		);
		finish_generic_player(itm);
	}
}

function click_twitvid_player(itm, uuid, opts) {
	if (!itm.txst_isLoaded) {
		swfobject.embedSWF("http://www.twitvid.com/player/"+opts.id, uuid, opts.width, opts.height, "9.0.0", "expressInstall.swf",
			{ autostart: '1' }, // flash vars
			swfopts, // params
			{} // attributes
		);
		finish_generic_player(itm);
	}
}

function click_google_player(itm, uuid, opts) {
	if (!itm.txst_isLoaded) {
		swfobject.embedSWF("http://video.google.com/googleplayer.swf", uuid, opts.width, opts.height, "9.0.0", "expressInstall.swf",
			{ 
				docid: opts.id,
				hl: 'play',
				fs: 'true',
				autoplay: 1
			}, // flash vars
			swfopts, // params
			{} // attributes
		);
		finish_generic_player(itm);
	}
}

function click_ustream_player(itm, uuid, opts) {
	if (!itm.txst_isLoaded) {
		swfobject.embedSWF("http://www.ustream.tv/flash/live/1/"+opts.id, uuid, opts.width, opts.height, "9.0.0", "expressInstall.swf",
			{ 
				cid: opts.id,
				locale: 'en_US',
				brand: 'embed',
				autoplay: 'true'
			}, // flash vars
			swfopts, // params
			{} // attributes
		);
		finish_generic_player(itm);
	}
}

function click_ustreamrecorded_player(itm, uuid, opts) {
	if (!itm.txst_isLoaded) {
		swfobject.embedSWF("http://www.ustream.tv/flash/video/"+opts.id, uuid, opts.width, opts.height, "9.0.0", "expressInstall.swf",
			{ 
				locale: 'en_US',
				autoplay: 'true'
			}, // flash vars
			swfopts, // params
			{} // attributes
		);
		finish_generic_player(itm);
	}
}

function click_generic_player(itm, uuid, opts) {
	switch (opts.type) {
		case 'flowplayer' : click_flow_player(itm, uuid, opts); break;
		case 'quicktime' : click_qt_player(itm, uuid, opts); break;
		case 'youtube' : click_youtube_player(itm, uuid, opts); break;
		case 'vimeo' : click_vimeo_player(itm, uuid, opts); break;
		case 'veoh' : click_veoh_player(itm, uuid, opts); break;
		case 'viddler' : click_viddler_player(itm, uuid, opts); break;
		case 'yahoo' : click_yahoo_player(itm, uuid, opts); break;
		case 'twitvid' : click_twitvid_player(itm, uuid, opts); break;
		case 'google' : click_google_player(itm, uuid, opts); break;
		case 'ustreamlive' : click_ustream_player(itm, uuid, opts); break;
		case 'ustreamrecorded' : click_ustreamrecorded_player(itm, uuid, opts); break;
	}
}

document.observe('dom:loaded', function() {
	
	// fix to make sure the objects can't be dragged
	$$('.txst-video-link').each(function (itm) {
		var mouseisdown = false;
		itm.observe('mousedown', function(e) {
			mouseisdown = true;
		});
		itm.observe('mousemove', function(e) {
			if (mouseisdown) e.stop();
		});
		itm.observe('mouseup', function(e) {
			mouseisdown = false;
		});
	});
	
	for (var uuid in video_opts) {
		var opts = video_opts[uuid];
		if (
					(opts.type != 'quicktime' && flashembed && flashembed.isSupported([9, 0])) ||
					(opts.type == 'quicktime' && haveqt)
			 ) {
			var itm = $(uuid);
			if (opts.type != 'flowplayer') itm = itm.up();
			itm.observe('click', function(e, uuid, opts) {
				this.focus();
				this.blur();
				click_generic_player(this, uuid, opts);
				e.stop();
			}.bindAsEventListener(itm, uuid, opts));
			if (opts.autoplay) click_generic_player(itm, uuid, opts);
		}
	}
			
	// fix for youtube in IE so we can click while it's playing
	$$('.youtubeplayer').each(function(itm) {			
		// fool IE into thinking the overlay isn't transparent
		var olay = itm.down('.youtube_overlay');
		if (olay) olay.setStyle({backgroundColor: '#FFFFFF', opacity: 0});
	});
	
});

