
/* TurnTo10.com scripts */
// Begin national js scripts


var Controls = Object();

Controls['getElement'] = function(name)
{
	return document.getElementById(name + 'Control');
};

Controls['setControlClassName'] = function(name, className)
{
	if(!Controls.getElement(name))
		return;
	Controls.getElement(name).className = "controls " + className;
	Controls.getElement(name).title = name.substring(0,1).toUpperCase() + name.substring(1);
};

Controls['onLastEntry'] = function()
{
	Controls['closeAll']();
};

Controls['closeAll'] = function()
{
	if(PlayerFactory['lastPlayer'])
		PlayerFactory['lastPlayer'].setVisible(false);
	Controls['stop']();
	Controls['progressBar'].stop();
};

Controls['onHalfway'] = function()
{
	// window.status = 'Halfway...';
};


Controls['setCurrentVideo'] = function(id,wtargs)
{
	if(PlayerFactory.defaultVideoId == -1)
		PlayerFactory.defaultVideoId = id;
	// WEBTRENDS
	if(PluginSupport.isActiveXDisplay())
	{
		document.getElementById('videoplug').URL = getVideoURL(id);
		Controls['play']();

		// track this event with WebTrends
		//if(!PlayerFactory.adTarget && typeof dcsMultiTrack == "function") 
		//	dcsMultiTrack('DCSext.mtype','Video','DCSext.vtype','Clickplay','DCSext.ib_pool','','DCSext.ib_coid','');
		//ib_WTPlayEvent('DCSext.mtype','Video','DCSext.vtype','Clickplay','DCSext.ib_pool','','DCSext.ib_coid','');
		if (wtargs && wtargs.length > 0) {
			ib_WTPlayEvent('DCSext.mtype','Video','DCSext.vtype','Clickplay','DCSext.ib_pool',wtargs[0],'DCSext.ib_coid',id,'WT.ti',wtargs[1]);
		}
	}
	else if(PluginSupport.isEmbedDisplay())
	{
		PlayerFactory['lastPlayer'].display.innerHTML =
			PlayerFactory.createEmbedPlayer(getVideoURL(id), true);
		if(PlayerFactory['lastPlayer'])
			PlayerFactory['lastPlayer'].setVisible(true);

		// track this event with WebTrends
		//if(!PlayerFactory.adTarget && typeof dcsMultiTrack == "function") 
		//	dcsMultiTrack('DCSext.mtype','Video','DCSext.vtype','Clickplay','DCSext.ib_pool','','DCSext.ib_coid','');
		//ib_WTPlayEvent('DCSext.mtype','Video','DCSext.vtype','Clickplay','DCSext.ib_pool','','DCSext.ib_coid','');
		if (wtargs && wtargs.length > 0) {
			ib_WTPlayEvent('DCSext.mtype','Video','DCSext.vtype','Clickplay','DCSext.ib_pool',wtargs[0],'DCSext.ib_coid',id,'WT.ti',wtargs[1]);
		}
	}
	return false;
};

Controls['progressBar'] = new ProgressBar();

function getPlayState()
{
	if(PluginSupport.isActiveXDisplay() || 
		!document || 
		!document.body ||
		!document.getElementById("videoplug"))
	{
		return -1;
	}
	return document.getElementById("videoplug").playState;
}

function getVideoURL(coid)
{
	return "http://" + pageProps.envhost + "/videofiles/" + coid + "/playlist.asx?qs=t;speed=high" + 
		(PlayerFactory.adTarget != null ? ";adtarget=" + PlayerFactory.adTarget : "") +
		(PluginSupport.isActiveXDisplay() ? ";clienttrack=clienttrack" : "");
}


function getPercentComplete()
{
	if(PluginSupport.isActiveXDisplay() && document.getElementById('videoplug'))
	{
		var videoplug = document.getElementById('videoplug');
		var length = (videoplug.controls.currentItem) ? videoplug.controls.currentItem.duration : 1;
		var position = (videoplug.controls)? videoplug.controls.currentPosition : 1;
		var pct = parseInt(Math.round(((position / length) * 100) * 100) * 0.01);
		if(pct == 'NaN' || pct < 1) pct = 1;
		return pct;
	}
	else
	{
		return 1;
	}
}


function getControlXOffset()
{
	var parent = document.getElementById('controlsparent');
	var len = parent.getElementsByTagName("div").length;
	return len * 22 - 12;
}


function createControl(name, yoffset)
{
	var parent = document.getElementById('controlsparent');
	var obj = parent.appendChild(
		document.createElement('div'));
	obj.id = name + "Control";
	obj.className = "controls " + name;
	obj.title = name.substring(0, 1).toUpperCase() + name.substring(1);
	obj.style.left = getControlXOffset() + "px";
	addEvent(obj, 'click', function() {
		Controls[name]();
	});

	return obj;
}


function ProgressBar()
{
	this.isStopped = false;
	this.hasFiredHalfway = false;

	this.stop = function()
	{
		this.isStopped = true;
	}

	this.start = function()
	{
		this.isStopped = false;
		this.hasFiredHalfway = false;
		this.poll();
	}

	this.restart = function()
	{
		this.setValue(0);
		this.start();
	}

	this.setValue = function(v)
	{
		if(v >= 50 && !this.hasFiredHalfway)
		{
			if(Controls['onHalfway'])
				Controls['onHalfway']();
			this.hasFiredHalfway = true;
		}
		try { document.getElementById('fill').style.width = v + "%"; }
		catch(er) { }
	}

	this.poll = function()
	{
		if(this.isStopped)
			return;
		this.setValue(getPercentComplete());
		// window.status = "STATE=" + getPlayState() + ", COMP=" + getPercentComplete() + "%";
		setTimeout("Controls.progressBar.poll()", 100);
	}
}


var PlayerFactory =
{
	size: null,
	
	adTarget: null,
	
	createPlayer: function(w, h, parentID, defaultVideoId, isVisibleWhenCreated)
	{
		if(PlayerFactory.adTarget == null)
		{
			if(/\/video\//.exec(pageProps.sectionpath) != null)
				PlayerFactory.adTarget = "playerpage";
		}
		
		if(typeof defaultVideoId != 'undefined')
			PlayerFactory['defaultVideoId'] = defaultVideoId;

		var dim = {
			width: w,
			height: PluginSupport.isEmbedDisplay() ? h+28 : h
		};

		PlayerFactory['size'] = dim;

		var parentCSS = document.getElementById(parentID).style;
		parentCSS.width = dim.width+"px";
		parentCSS.height = (dim.height+28)+"px";

		var display = document.getElementById(parentID).appendChild(document.createElement('div'));
		display.className = "videoplayer";
		display.id = "videoplugdisplay";
		display.style.width = dim.width + "px";
		display.style.height = dim.height + "px";
		display.style.visibility = (typeof isVisibleWhenCreated == 'undefined' || isVisibleWhenCreated ? 'visible' : 'hidden');

		if(PluginSupport.isActiveXDisplay())
		{
			// NOTE: CREATE VIDEO PLUGIN OBJECT, AND STATE-SPECIFIC CSS HANDLERS
			var out = '';
			out +='<OBJECT ID="videoplug" CLASSID="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" CODEBASE="http://www.microsoft.com/netshow/download/en/nsmp2inf.cab#Version=5,1,51,415" standby="Loading..." WIDTH="100%" HEIGHT="100%" type="application/x-oleobject">';
			out +='<PARAM NAME="autoStart" VALUE="0" /><PARAM NAME="stretchToFit" VALUE="false" /><PARAM NAME="uiMode" VALUE="none" /><PARAM NAME="URL" VALUE="" /><PARAM NAME="mute" VALUE="0" /><PARAM NAME="windowlessVideo" VALUE="0" /><PARAM NAME="invokeURLs" VALUE="1" />';
			out +='</OBJECT>';
			display.innerHTML = out;

			var playPauseCSS = function()
			{
				switch(getPlayState())
				{
					case 1 :
					case 2 :
					case 10 :
						Controls.setControlClassName('play', 'play');
						break;
					case 3 :
						Controls.setControlClassName('play', 'pause');
						break;
				}
			};

			document.getElementById("videoplug").attachEvent(
				"playstatechange", playPauseCSS);

			var currItemChange = function()
			{
				if(document.getElementById('videoplug').currentMedia.name ==
						'END OF PLAYLIST' && Controls['onLastEntry'])
					Controls['onLastEntry']();
			};

			document.getElementById("videoplug").attachEvent(
				"currentItemChange", currItemChange);

			// NOTE: CREATE BUFFERING SWF
			var buff = document.getElementById(parentID).appendChild(document.createElement('div'));
			buff.id = 'buffering';
			var htm = '';
			htm +='<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="100%" height="100%" id="videoplugbuffering" align="middle">';
			htm +='<param name="allowScriptAccess" value="sameDomain" /><param name="bgcolor" value="#000000" /><param name="quality" value="high" /><param name="movie" value="http://images.ibsys.com/sh/images/videoplayer/hrst/buffering.swf" />';
			htm +='<embed src="http://images.ibsys.com/sh/images/videoplayer/hrst/buffering.swf" quality="high" bgcolor="#000000" width="100%" height="100%" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />';
			htm +='</object>';
			buff.innerHTML = htm;

			/**
			 * NOTE: fix for js error on window unload. check if document
			 * exists prior to asking it for items.
			 */
			document.getElementById("videoplug").attachEvent(
				"playstatechange", function()
			{
				if(!document || !document.body)
					return;
				var st = getPlayState();
				if(document.getElementById("buffering"))
				{
					document.getElementById('buffering').style.visibility =
						((st == 6 || st == 9) ? 'visible' : 'hidden');
				}
				if(document.getElementById("videoplugdisplay"))
				{
					document.getElementById('videoplugdisplay').style.visibility =
						((st == 6 || st == 9) ? 'hidden' : 'visible')
				}
			});

		}
		else if(PluginSupport.isEmbedDisplay())
		{
			if(typeof isVisibleWhenCreated == 'undefined' || isVisibleWhenCreated)
				display.innerHTML = PlayerFactory.createEmbedPlayer('', false);

		}

		return PlayerFactory.lastPlayer = new Player(display);
	},

	createEmbedPlayer: function(src, showControls)
	{
		var showCtrlVal = showControls ? '1' : '0';
		var out = '';
		out +='<embed id="videoplug"';
		out +='	src="'+src+'"';
		out +='	filename="'+src+'"';
		out +='	width="100%"';
		out +='	height="100%"';
		out +='	stretchToFit="1"';
		out +='	type="application/x-mplayer2"';
		out +='	autostart="1"';
		out +='	showcontrols="'+showCtrlVal+'"';
		out +='	transparentstart="1"';
		out +='	showstatusbar="0"';
		out +='	showtracker="0">';
		out +='</embed>';
		return out;
	},

	createControls: function()
	{
		var names;
		if(arguments.length == 0)
			names = [ 'fastReverse', 'play', 'stop' ];
		else
		{
			names = Array();
			for(var j=0; j < arguments.length; j++)
				names.push(arguments[j]);
		}

		if(PluginSupport.isActiveXDisplay())
		{
			var dim = PlayerFactory['size'];
			var div = document.getElementById('playerparent').appendChild(
				document.createElement('div'));
			div.id = 'controlsparent';
			div.style.top = dim.height+"px";

			var doPlayPause = function()
			{
				if("" == document.getElementById('videoplug').URL)
				{
					document.getElementById('videoplug').URL = getVideoURL(PlayerFactory['defaultVideoId']);
				}
				switch(getPlayState())
				{
					case 3 :
					case 4 :
					case 5 :
						document.getElementById('videoplug').controls.pause();
						break;
					default :
						document.getElementById('videoplug').controls.play();
				}
			};

			Controls['play'] = function()
			{
				if(!PlayerFactory['lastPlayer'].isVisible())
					PlayerFactory['lastPlayer'].setVisible(true);
				if(Controls['progressBar'].isStopped)
					Controls['progressBar'].restart();
				doPlayPause();
			};
			Controls['pause'] = doPlayPause;
			Controls['stop'] = function()
			{
				document.getElementById('videoplug').close();
				document.getElementById('videoplug').controls.stop();
				Controls['progressBar'].stop();
				Controls['progressBar'].setValue(0);
				if(PlayerFactory['lastPlayer'])
					PlayerFactory['lastPlayer'].setVisible(false);
			};
			Controls['fastReverse'] = function() { document.getElementById('videoplug').controls.fastReverse(); };
			Controls['fastForward'] = function() { document.getElementById('videoplug').controls.fastForward(); };

			for(var j=0; j < names.length; j++)
			{
				createControl(names[j]);
			}

			var pbar = document.getElementById('controlsparent').appendChild(
				document.createElement('div'));
			pbar.className = 'progressbar';
			pbar.style.left = getControlXOffset() + "px";
			var fill = pbar.appendChild(document.createElement('div'));
			fill.id = 'fill';
			fill.appendChild(document.createElement('span'));

			Controls.progressBar.start();
		}
		else if(PluginSupport.isEmbedDisplay())
		{
			Controls['play'] = function() { };
			Controls['pause'] = function() { };
			Controls['playPause'] = function() { };
			Controls['stop'] = function() { };
			Controls['fastReverse'] = function() { };
			Controls['fastForward'] = function() { };
		}
		return Controls;
	}
};

PlayerFactory['defaultVideoId'] = -1;

PlayerFactory['lastPlayer'] = null;


function Player(display)
{
	this.display = display;

	this.setVisible = function(b)
	{
		this.display.style.visibility = b ? "visible" : "hidden";
	}

	this.isVisible = function()
	{
		return this.display.style.visibility != "hidden";
	}

}


var HAS_WMP = 1 << 0;
var HAS_ACTIVEX = 1 << 1;
var HAS_GECKOACTIVEX = 1 << 2;
var HAS_REALPLAYER = 1 << 3;
var M_EMBED = 1 << 4;
var M_ACTIVEX = 1 << 5;

var PluginSupport =
{
	supportMask: -1,

	getSupportMask: function()
	{
		if(PluginSupport.supportMask == -1)
		{
			var x = 0;
			try
			{
				if(window.ActiveXObject && (new ActiveXObject("WMPlayer.OCX.7")))
					x = x | HAS_ACTIVEX | HAS_WMP | M_ACTIVEX;
				// else if(window.GeckoActiveXObject && (new GeckoActiveXObject("WMPlayer.OCX.7")))
					// x = x | HAS_GECKOACTIVEX | HAS_WMP | M_ACTIVEX;
			}  catch(ex) { }
			if(x == 0)
			{
				try
				{
					if(navigator.mimeTypes && navigator.mimeTypes['application/x-mplayer2'] &&
						navigator.mimeTypes['application/x-mplayer2'].enabledPlugin)
						x = x | HAS_WMP | M_EMBED;
				} catch(ex) { }
			}
			PluginSupport.supportMask = x;
		}
		return PluginSupport.supportMask;
	},
	test: function(n) { return (PluginSupport.getSupportMask() & n) == n; },
	hasWMP: function() { return PluginSupport.test(HAS_WMP); },
	hasActiveX: function() { return PluginSupport.test(HAS_ACTIVEX); },
	hasGeckoActiveX: function() { return PluginSupport.test(HAS_GECKOACTIVEX); },
	isEmbedDisplay: function() { return PluginSupport.test(M_EMBED); },
	isActiveXDisplay: function() { return PluginSupport.test(M_ACTIVEX); }
};

// 
// End national_js scripts

