/* Individual functions because the player only does flat function callbacks! :/ */
var PLAYER;
var load_begin;		// When did the player start loading the file
var load_end;		// When did it finish loading the file

function loadPlayer (player_id, external_id, autostart) 
{	
	var flashvars = {
		autostart: (autostart == true) ? true : false
	};
	var params = {allowfullscreen: true, allowscriptaccess: 'always', bgcolor: '#000000'};
	var attributes = false;

	var width = '640'; 
	var height = '360';

	swfobject.embedSWF("/_play/" + external_id, player_id, width, height, "8", null, flashvars, params, attributes);
}

function playerLoadFile (filename)
{
	PLAYER.sendEvent ("LOAD", filename);
}

function playerReady(obj) 
{
	PLAYER = document.getElementById(obj.id);

	/* Add listeners */
	PLAYER.addControllerListener("MUTE","playerEventMute");
	PLAYER.addModelListener("STATE","playerEventState");
	PLAYER.addModelListener("LOADED","playerEventLoaded");
	PLAYER.addModelListener("ERROR", "playerEventError");
	PLAYER.addControllerListener("VOLUME", "playerEventVolume");
	PLAYER.addModelListener("TIME", "playerEventTime");
	
	load_begin = new Date().getTime();
}

function playerEventMute(obj) 
{
	fliggo.debug (obj);

	playerTrackEvent ('Video', (obj.state == true ? 'MUTE' : 'UNMUTE'), video_id);
}

function playerEventState (obj)
{
	fliggo.debug (obj);
	
	if (obj.newstate == 'COMPLETED' && typeof tv != 'undefined')
	{
		tv.videoPostRoll();
	}

	playerTrackEvent ('Video', obj.newstate, video_id);
}

function playerEventLoaded(obj)
{	
	if (obj.loaded == obj.total && obj.offset == 0)
	{
		load_end = new Date().getTime();
		
		var seconds = Math.round((load_end - load_begin) / 1000, 0);
		
		fliggo.debug ('Video loaded in ' + seconds + ' seconds');
		
		playerTrackEvent ('Video', 'LOAD_TIME', video_id, seconds);
		playerTrackEvent ('Video', 'LOAD_SPEED', video_id, obj.loaded / seconds);
	}
}

function playerEventError(obj)
{
	playerTrackEvent ('Video', 'ERROR', video_id + '|' + obj.message);
}

function playerEventVolume(obj) 
{
	fliggo.debug (obj);

	playerTrackEvent ('Video', 'VOLUME', video_id, obj.percentage);
}

function playerTrackEvent (category, action, optional_label, optional_value)
{
	if (typeof pageTracker != "undefined")
	{
		pageTracker._trackEvent(category, action, optional_label, optional_value);	
	}
}

function playerEventTime (obj)
{
	if (typeof tv != 'undefined')
	{
		tv.video_position = obj.position;
	}
}

function getFlashVersion () 
{
  // ie 
  try { 
    try { 
      // avoid fp6 minor version lookup issues 
      // see: http://blog.deconcept.com/2006/01/11/getvariable-setvariable-crash-internet-explorer-flash-6/ 
      var axo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash.6'); 
      try { axo.AllowScriptAccess = 'always'; } 
      catch(e) { return '6,0,0'; } 
    } catch(e) {} 
    return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\D+/g, ',').match(/^,?(.+),?$/)[1]; 
  // other browsers 
  } catch(e) { 
    try { 
      if(navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin){ 
        return (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]).description.replace(/\D+/g, ",").match(/^,?(.+),?$/)[1]; 
      } 
    } catch(e) {} 
  } 
  return '0,0,0'; 
}