var gvx_UserAgentStr = navigator.userAgent.toLowerCase();
var gvx_isWin = navigator.appVersion.toLowerCase().indexOf("win") != -1;
var gvx_isGecko = gvx_UserAgentStr.indexOf("gecko") != -1;
var gvx_isOpera = gvx_UserAgentStr.indexOf("opera") != -1;
var gvx_isSafari = gvx_UserAgentStr.indexOf("safari") != -1;
var gvx_isChrome = gvx_UserAgentStr.indexOf("chrome") != -1;
var gvx_isIE = gvx_UserAgentStr.indexOf("msie") != -1;
var gvx_isIE7 = (window.XMLHttpRequest != null && window.ActiveXObject != null);

var __vhx_insertscrpt = function(url)
{
	try
	{
		var b = false;
		var scripts = document.getElementsByTagName('script');
		for (var i = 0; i < scripts.length; i++)
		{
			var o = scripts[i];
			if (o.src == url)
				b = true;
		}
		if(!b)
		{
			try
			{
				var scrpt = document.createElement("script");
				scrpt.setAttribute("type", "text/javascript");
				scrpt.setAttribute("src", url);
				document.getElementsByTagName("head")[0].appendChild(scrpt);
			}
			catch(err)
			{
				document.write('<s' + 'cript type="text/javascript" src="');
				document.write(url + '"></s' + 'cript>');
			}
		}
	}
	catch(er){}
}

var __vhx_insertcss = function(url)
{
	try
	{
		var b = false;
		var links = document.getElementsByTagName('link');
		for (var i = 0; i < links.length; i++)
		{
			var o = links[i];
			if (o.href == url)
				b = true;
		}
		if(!b)
		{
			try
			{
			  var lnk = document.createElement("link");
			  lnk.type="text/css";
			  lnk.rel="stylesheet";
			  lnk.href=url;
			  document.getElementsByTagName("head")[0].appendChild(lnk);
			}catch(err){
			  document.write('<link rel="stylesheet" type="text/css" href="');
			  document.write(url + '" />');
			}
		}
	}
	catch(er){}
}

var $GetVehixWidgetsVideoEmbeddedPlayer = function()
{
	try{
		var cnfg = arguments[0];
		Vehix.Widgets.Video.EmbeddedPlayer = new Vehix$Widgets$Video$EmbeddedPlayer(cnfg);
	}catch(er)
	{
		var inc = 0;
		if(arguments.length > 1 && !isNaN(arguments[1]))
		{
			inc = arguments[1];
		}
		if(inc < 10)
		{
			setTimeout(function()
				{
					$GetVehixWidgetsVideoEmbeddedPlayer(cnfg, inc+1);
				}, 500);
		}
		else
		{
			return er;
		}
	}
	if(typeof(Vehix.Widgets.Video.EmbeddedPlayer) != "undefined")
	{
		Vehix.Widgets.Video.EmbeddedPlayer._buildWidget();
	}
}

var __vehixRegisterNameSpace = function(nspath)
{
	var p = window;
	var nsp = nspath.split('.');

	for (var i = 0; i < nsp.length; i++) 
	{
		var c = nsp[i];
		var ns = p[c];
		if (ns && !ns.__namespace){ throw 'invalid namespace';}
		if (!ns) 
		{
			ns = p[c] = 
				{	__namespace: true
				, __typeName: nsp.slice(0, i + 1).join('.')
				, getName: function() {return this.__typeName;}
				};
			var n;
			try {n = eval(ns.__typeName);}
			catch(e){n = null;}
			if (n !== ns) {
					delete p[c];
					throw 'invalid namespace: '+nspath;
			}										
		}
		p = ns;
	}
}

try {Type.registerNamespace("Vehix.Widgets.Video.EmbeddedPlayer");}
catch(er)
{
	__vehixRegisterNameSpace("Vehix.Widgets.Video.EmbeddedPlayer");
}	

var $WidgetResolveUrl = function(url)
{
	if(url && typeof(url.replace) == "function")
		return "http://widgets.vehix.com" + url.replace("~", "");
}

var Vehix$Imports$Presentation;__vhx_insertscrpt("http://widgets.vehix.com/_importJs/JsImport.ashx?f=Widgets.Imports.Presentation.js");
var Vehix$Imports$Flash;__vhx_insertscrpt("http://widgets.vehix.com/_importJs/JsImport.ashx?f=Widgets.Imports.Flash.js");

Vehix$Widgets$Video$EmbeddedPlayer = function(config)
{
	if(config && typeof(config) == "object")
	{
		this._container = this.$(config.Container);
		this._callback = config.CallBack;
		this._playerid = "VxEmbeddedVideoPlayerObject";
		this._width = 401;
		this._height = 354;
		this._playertype = "";
		if(config.StartPaused)
			this._playertype = "embed";
		if(config.PartnerID)
			this.PartnerID = config.PartnerID;
		if(config.FlashVars)
			this._fv = this.FlashVars(config.FlashVars);
		if(config.VideoID != null && typeof(config.VideoID) != "undefined")
			this.VideoID = config.VideoID;
		if(config.Width && !isNaN(Number(config.Width)))
			this._width = config.Width;
		if(config.Height && !isNaN(Number(config.Height)))
			this._height = config.Height;
		if(config.PlayerID)
			this._playerid = config.PlayerID;
	}
}

Vehix$Widgets$Video$EmbeddedPlayer.prototype =
{
	_hasValue : function()
	{
		var res = false;
		if(arguments.length)
		{
			var arg = arguments;
			var v = arg[0];
			var t = null;
			if(arg.length > 1) t = arg[1];
			if(typeof(v) != "undefined" && (t == null || typeof(v) == t))
			{
				res = true;
			}
		}
		return res;
	},
	
	_bind : function(fnc) 
	{ 
		var obj = this;
		temp = function() 
		{ 
			return fnc.apply(obj, arguments); 
		}; 

		return temp; 
	},
	
	_bindOther : function(fnc, obj) 
	{ 
		temp = function() 
		{ 
			return fnc.apply(obj, arguments); 
		}; 

		return temp; 
	},
	
	_cancelEvent : function(e)
	{
		if(typeof(e) == "undefined")
		{
			if(typeof(event) != "undefined") e = event;
		}
		if (e && e.preventDefault)
		{
			e.preventDefault();
		}
		if (e && e.preventBubble)
		{
			e.preventBubble();
		}
		else if(e)
		{
			e.returnValue = false;
		}
	},
	
	_trycatchrepeat : function(fnc, interval, args, loop, limit)
	{
		try
		{
			if(typeof(args) != "undefined")
			{
				fnc(args);
			}
			else
			{
				fnc();
			}
		}
		catch(er)
		{
			if(isNaN(loop)) loop = 0;
			if(isNaN(limit)) limit = 20;
			if(loop <= limit)
			{
				var cb = this._bind(this._trycatchrepeat);
				var inc = loop + 1;
				this._trycatchrepeat_timeout = setTimeout
				(
					function()
					{
						cb(fnc, interval, args, inc, limit);
					}
				, interval);
			}
		}
	},
	
	_getEventTarget : function(e)
	{
		var a;
		if(typeof(e) == "undefined")
		{
			if(typeof(event) != "undefined") e = event;
		}
		typeof(e.currentTarget) != "undefined" ? a = e.currentTarget : a = e.srcElement;
		return a;
	},
	
	_addRenderDependancy: function(arg)
	{
		if(this._renderDependencies)
			this._renderDependencies.push(arg);
		else
		{
			this._renderDependencies = new Array();
			this._renderDependencies.push(arg);
		}
	},
	
	_callRender: function(d, args)
	{
		var isready = typeof(Vehix$Imports$Presentation) != "undefined" && Vehix$Imports$Presentation.Ready;
		
		if(this._renderDependencies && this._renderDependencies.length > 0)
		{
			for(var i = 0; i < this._renderDependencies.length; i++)
			{
				if(!isready)
					break;
				else
				{
					if(typeof(this._renderDependencies[i]) == "string")
					{
						try
						{
							isready = eval("typeof(" + this._renderDependencies[i] + ") != 'undefined'");
						}
						catch(er){isready = false;}
					}
					else
						isready = this._renderDependencies[i];
				}
			}
		}
			
		if(isready)
		{
			if(Vehix$Imports$Communication)
			{
				if(Vehix$Imports$Communication.CheckCommunicationsObject(d))
					this._render();
			}
			else
				this._render();
		}
		else
		{
			var inc = 0;
			if(arguments.length > 1)
			{
				if(arguments[1] && arguments[1].length > 0 && !isNaN(arguments[1][0]))
					inc = arguments[1][0];
			}
			if(inc < 20)
			{
				var rend = this._bind(this._buildWidget);
				this._renderDependencies = new Array();
				setTimeout(function()
					{
						rend(inc+1);
					}, 500);
			}
			else
			{
				alert("Cannot load Vehix.Widgets.Video.EmbeddedPlayer.");
			}
		}
	},
	
	$ : function(oid)
	{
		return document.getElementById(oid);
	},
	
	_wait : function(s)
	{
		var date = new Date();
		var curDate = null;
		do 
		{ 
			curDate = new Date(); 
		} 
		while(curDate-date < s);
	},

	_buildWidget : function()
	{
		if(Vehix$Imports$Presentation && Vehix$Imports$Presentation.Ready)
		{
			this._render();
			if(typeof(this._callback) == "function")
				this._callback(this);
		}
		else
		{
			var rend = this._bind(this._buildWidget);
			setTimeout(rend, 500);
		}
	},
	
	_render : function(bplay)
	{
		var swfurl = (this._playertype && this._playertype == "embed") ? "http://widgets.vehix.com/_video/EmbeddedVideoPlayer.swf" : "http://widgets.vehix.com/_video/VideoPlayer.swf";
		if(bplay)
		{
			swfurl = "http://widgets.vehix.com/_video/VideoPlayer.swf"
		}
		var fp = Vehix$Imports$Flash;
		var p = Vehix$Imports$Presentation;
		var div = p.div("vx_widgets-video-embeddedplayer-container");
		var width = typeof(this._width) == "undefined" ? 401 : this._width;
		var height = typeof(this._height) == "undefined" ? 354 : this._height;
		var fv = "";
		var urlchngd = false;
		if(this._fv && typeof(this._fv) == "object")
		{
			fv = this._fv;
		}
		if(this.VideoID && this.VideoID.length)
		{
			swfurl += "?vid=" + this.VideoID;
			urlchngd = true;
		}
		if(this.PartnerID && this.PartnerID.length)
		{
			swfurl += urlchngd ? "&" : "?";
			swfurl += "pid=" + 	this.PartnerID;
		}
		div.style.width = width + "px";
		div.style.height = height + "px";
		div.innerHTML = fp.FlashObjectString(this._playerid, width, height, swfurl, fv, 9, 0, 124, bplay);
		//VehixWidgetsUtils.WriteString();
		p._replaceChildren(this._container, div);
	},
	
	_player : function()
	{
		if(typeof(this._flashObject) == "undefined")
			this._flashObject = Vehix$Imports$Flash.FlashObject();
		return this._flashObject;
	},
	
	FlashVars : function(arg)
	{
		var result = new Object();
		var keys = [["PageName", "pgnm"],["Channel", "chnl"],["Account", "acct"],["Buffer", "buffer"],["SiteBrand", "stbrnd"],["SubBrand", "sbbrnd"],["UpNext", "upnext"],["Zip","zip"],
					["PreRollTile", "adTagTile"],["MetricsPlayerName","mpnm"],["EnableJavaScript","extint"],["PreRollOrd", "adTagOrd"],["PreRollUrl", "adTagUrl"],["LCEnabled", "lcad"], 
					["Taxons", "txns"],["MetricsUpdateInterval", "mui"],["ChangeCallbackMethod", "vccb"],["AdSection", "adsec"],["MetricsVisitorID","mvid"],["Z1","Z1"],["Z2","Z2"],
					["Z3","Z3"],["LinkPanelType","lpt"], ["Make", "mk"], ["Model", "mdl"], ["BodyStyle", "bdystyl"]
					, ["Segment", "sgmnt"], ["Section", "sctn"], ["StopPreRoll", "nopreroll"]]
		for(var key in arg)
		{
			for(var i = 0; i < keys.length; i++)
			{
				if(key == keys[i][0])
				{
					result[keys[i][1]] = arg[key];
					break;
				}
			}
		}
		
		if(this._cid)
			result.cid = this._cid;
		result.nopreroll = "true";
		if(typeof(result.adTagOrd) == "undefined")
			result.adTagOrd = window.jsor;
		return result;
	},
	
	_redraw : function(videoid)
	{
		var p = Vehix$Imports$Presentation;
		var div = p.div("vw_tempLoadingDiv");
		div.style.width = this._width + "px";
		div.style.height = this._height + "px";
		div.style.backgroundColor = "#000000";
		var plyr = this._player();
		if(typeof(plyr) != "undefined" && plyr.parentNode != null)
		{
			plyr.parentNode.removeChild(plyr);
		}
		p._replaceChildren(this._container, div);
		this.VideoID = videoid;
		this._render(true);
	},
	
	PlayVideo : function(videoid)
	{
		if(typeof(videoid) == "undefined")
			videoid = this.VideoID;
		try
		{
			this._player().VideoByID(videoid);
		}
		catch(er)
		{
			this._redraw(videoid);
		}
	},
	
	PauseVideo : function()
	{
		try
		{
			this._player().VideoPause();
		}
		catch(er)
		{
			this._redraw();
		}
	},
	
	Unload : function()
	{
		try
		{
			this._player().VideoPause();
		}
		catch(er)
		{
			var plyr = this._player();
			if(typeof(plyr) != "undefined" && plyr.parentNode != null)
			{
				plyr.parentNode.removeChild(plyr);
			}
		}
	},
	
	_createSelectors : function()
	{
		var p = Vehix$Imports$Presentation;
		this._tdvs = new Vehix$Imports$Selectors$Video({"SelectorType":"TestDrive", "LinkUrl":this._defaultlinkurl});
		this._bgvs = new Vehix$Imports$Selectors$Video({"SelectorType":"BuyingGuide", "LinkUrl":this._defaultlinkurl});
		p._ac(this._dtdvs, [this._tdvs._vs1, this._tdvs._vs2, this._tdvs._button]);
		p._ac(this._dbgvs, [this._bgvs._vs1, this._bgvs._button]);
	},
	
	_linkClickHanlder : function(e, cat)
	{
		this._cancelEvent(e);
		var a = this._getEventTarget(e);
		if(a.href == this._defaultlinkurl)
		{
			this._getLinkUrl(cat, a);
		}
		else
		{
			window.open(a.href, "vx_VideoWindow");
		}
	}
}

if(typeof(jsor) == "undefined")
{
        var jsor = Math.floor(Math.random()*10000000000000000);
        try
        {
                if(top)
                {
                        if(typeof(top.jsor) != "undefined")
                        {
                                var jsor = top.jsor;
                        }
                        else
                        {
                                top.jsor = jsor;
                        }
                }
        }
        catch(e){}
}


