﻿	// swfobject.js

/* SWFObject v2.1 <http://code.google.com/p/swfobject/>
	Copyright (c) 2007-2008 Geoff Stearns, Michael Williams, and Bobby van der Sluis
	This software is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
*/
var swfobject=function(){var b="undefined",Q="object",n="Shockwave Flash",p="ShockwaveFlash.ShockwaveFlash",P="application/x-shockwave-flash",m="SWFObjectExprInst",j=window,K=document,T=navigator,o=[],N=[],i=[],d=[],J,Z=null,M=null,l=null,e=false,A=false;var h=function(){var v=typeof K.getElementById!=b&&typeof K.getElementsByTagName!=b&&typeof K.createElement!=b,AC=[0,0,0],x=null;if(typeof T.plugins!=b&&typeof T.plugins[n]==Q){x=T.plugins[n].description;if(x&&!(typeof T.mimeTypes!=b&&T.mimeTypes[P]&&!T.mimeTypes[P].enabledPlugin)){x=x.replace(/^.*\s+(\S+\s+\S+$)/,"$1");AC[0]=parseInt(x.replace(/^(.*)\..*$/,"$1"),10);AC[1]=parseInt(x.replace(/^.*\.(.*)\s.*$/,"$1"),10);AC[2]=/r/.test(x)?parseInt(x.replace(/^.*r(.*)$/,"$1"),10):0}}else{if(typeof j.ActiveXObject!=b){var y=null,AB=false;try{y=new ActiveXObject(p+".7")}catch(t){try{y=new ActiveXObject(p+".6");AC=[6,0,21];y.AllowScriptAccess="always"}catch(t){if(AC[0]==6){AB=true}}if(!AB){try{y=new ActiveXObject(p)}catch(t){}}}if(!AB&&y){try{x=y.GetVariable("$version");if(x){x=x.split(" ")[1].split(",");AC=[parseInt(x[0],10),parseInt(x[1],10),parseInt(x[2],10)]}}catch(t){}}}}var AD=T.userAgent.toLowerCase(),r=T.platform.toLowerCase(),AA=/webkit/.test(AD)?parseFloat(AD.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,q=false,z=r?/win/.test(r):/win/.test(AD),w=r?/mac/.test(r):/mac/.test(AD);/*@cc_on q=true;@if(@_win32)z=true;@elif(@_mac)w=true;@end@*/return{w3cdom:v,pv:AC,webkit:AA,ie:q,win:z,mac:w}}();var L=function(){if(!h.w3cdom){return }f(H);if(h.ie&&h.win){try{K.write("<script id=__ie_ondomload defer=true src=//:><\/script>");J=C("__ie_ondomload");if(J){I(J,"onreadystatechange",S)}}catch(q){}}if(h.webkit&&typeof K.readyState!=b){Z=setInterval(function(){if(/loaded|complete/.test(K.readyState)){E()}},10)}if(typeof K.addEventListener!=b){K.addEventListener("DOMContentLoaded",E,null)}R(E)}();function S(){if(J.readyState=="complete"){J.parentNode.removeChild(J);E()}}function E(){if(e){return }if(h.ie&&h.win){var v=a("span");try{var u=K.getElementsByTagName("body")[0].appendChild(v);u.parentNode.removeChild(u)}catch(w){return }}e=true;if(Z){clearInterval(Z);Z=null}var q=o.length;for(var r=0;r<q;r++){o[r]()}}function f(q){if(e){q()}else{o[o.length]=q}}function R(r){if(typeof j.addEventListener!=b){j.addEventListener("load",r,false)}else{if(typeof K.addEventListener!=b){K.addEventListener("load",r,false)}else{if(typeof j.attachEvent!=b){I(j,"onload",r)}else{if(typeof j.onload=="function"){var q=j.onload;j.onload=function(){q();r()}}else{j.onload=r}}}}}function H(){var t=N.length;for(var q=0;q<t;q++){var u=N[q].id;if(h.pv[0]>0){var r=C(u);if(r){N[q].width=r.getAttribute("width")?r.getAttribute("width"):"0";N[q].height=r.getAttribute("height")?r.getAttribute("height"):"0";if(c(N[q].swfVersion)){if(h.webkit&&h.webkit<312){Y(r)}W(u,true)}else{if(N[q].expressInstall&&!A&&c("6.0.65")&&(h.win||h.mac)){k(N[q])}else{O(r)}}}}else{W(u,true)}}}function Y(t){var q=t.getElementsByTagName(Q)[0];if(q){var w=a("embed"),y=q.attributes;if(y){var v=y.length;for(var u=0;u<v;u++){if(y[u].nodeName=="DATA"){w.setAttribute("src",y[u].nodeValue)}else{w.setAttribute(y[u].nodeName,y[u].nodeValue)}}}var x=q.childNodes;if(x){var z=x.length;for(var r=0;r<z;r++){if(x[r].nodeType==1&&x[r].nodeName=="PARAM"){w.setAttribute(x[r].getAttribute("name"),x[r].getAttribute("value"))}}}t.parentNode.replaceChild(w,t)}}function k(w){A=true;var u=C(w.id);if(u){if(w.altContentId){var y=C(w.altContentId);if(y){M=y;l=w.altContentId}}else{M=G(u)}if(!(/%$/.test(w.width))&&parseInt(w.width,10)<310){w.width="310"}if(!(/%$/.test(w.height))&&parseInt(w.height,10)<137){w.height="137"}K.title=K.title.slice(0,47)+" - Flash Player Installation";var z=h.ie&&h.win?"ActiveX":"PlugIn",q=K.title,r="MMredirectURL="+j.location+"&MMplayerType="+z+"&MMdoctitle="+q,x=w.id;if(h.ie&&h.win&&u.readyState!=4){var t=a("div");x+="SWFObjectNew";t.setAttribute("id",x);u.parentNode.insertBefore(t,u);u.style.display="none";var v=function(){u.parentNode.removeChild(u)};I(j,"onload",v)}U({data:w.expressInstall,id:m,width:w.width,height:w.height},{flashvars:r},x)}}function O(t){if(h.ie&&h.win&&t.readyState!=4){var r=a("div");t.parentNode.insertBefore(r,t);r.parentNode.replaceChild(G(t),r);t.style.display="none";var q=function(){t.parentNode.removeChild(t)};I(j,"onload",q)}else{t.parentNode.replaceChild(G(t),t)}}function G(v){var u=a("div");if(h.win&&h.ie){u.innerHTML=v.innerHTML}else{var r=v.getElementsByTagName(Q)[0];if(r){var w=r.childNodes;if(w){var q=w.length;for(var t=0;t<q;t++){if(!(w[t].nodeType==1&&w[t].nodeName=="PARAM")&&!(w[t].nodeType==8)){u.appendChild(w[t].cloneNode(true))}}}}}return u}function U(AG,AE,t){var q,v=C(t);if(v){if(typeof AG.id==b){AG.id=t}if(h.ie&&h.win){var AF="";for(var AB in AG){if(AG[AB]!=Object.prototype[AB]){if(AB.toLowerCase()=="data"){AE.movie=AG[AB]}else{if(AB.toLowerCase()=="styleclass"){AF+=' class="'+AG[AB]+'"'}else{if(AB.toLowerCase()!="classid"){AF+=" "+AB+'="'+AG[AB]+'"'}}}}}var AD="";for(var AA in AE){if(AE[AA]!=Object.prototype[AA]){AD+='<param name="'+AA+'" value="'+AE[AA]+'" />'}}v.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+AF+">"+AD+"</object>";i[i.length]=AG.id;q=C(AG.id)}else{if(h.webkit&&h.webkit<312){var AC=a("embed");AC.setAttribute("type",P);for(var z in AG){if(AG[z]!=Object.prototype[z]){if(z.toLowerCase()=="data"){AC.setAttribute("src",AG[z])}else{if(z.toLowerCase()=="styleclass"){AC.setAttribute("class",AG[z])}else{if(z.toLowerCase()!="classid"){AC.setAttribute(z,AG[z])}}}}}for(var y in AE){if(AE[y]!=Object.prototype[y]){if(y.toLowerCase()!="movie"){AC.setAttribute(y,AE[y])}}}v.parentNode.replaceChild(AC,v);q=AC}else{var u=a(Q);u.setAttribute("type",P);for(var x in AG){if(AG[x]!=Object.prototype[x]){if(x.toLowerCase()=="styleclass"){u.setAttribute("class",AG[x])}else{if(x.toLowerCase()!="classid"){u.setAttribute(x,AG[x])}}}}for(var w in AE){if(AE[w]!=Object.prototype[w]&&w.toLowerCase()!="movie"){F(u,w,AE[w])}}v.parentNode.replaceChild(u,v);q=u}}}return q}function F(t,q,r){var u=a("param");u.setAttribute("name",q);u.setAttribute("value",r);t.appendChild(u)}function X(r){var q=C(r);if(q&&(q.nodeName=="OBJECT"||q.nodeName=="EMBED")){if(h.ie&&h.win){if(q.readyState==4){B(r)}else{j.attachEvent("onload",function(){B(r)})}}else{q.parentNode.removeChild(q)}}}function B(t){var r=C(t);if(r){for(var q in r){if(typeof r[q]=="function"){r[q]=null}}r.parentNode.removeChild(r)}}function C(t){var q=null;try{q=K.getElementById(t)}catch(r){}return q}function a(q){return K.createElement(q)}function I(t,q,r){t.attachEvent(q,r);d[d.length]=[t,q,r]}function c(t){var r=h.pv,q=t.split(".");q[0]=parseInt(q[0],10);q[1]=parseInt(q[1],10)||0;q[2]=parseInt(q[2],10)||0;return(r[0]>q[0]||(r[0]==q[0]&&r[1]>q[1])||(r[0]==q[0]&&r[1]==q[1]&&r[2]>=q[2]))?true:false}function V(v,r){if(h.ie&&h.mac){return }var u=K.getElementsByTagName("head")[0],t=a("style");t.setAttribute("type","text/css");t.setAttribute("media","screen");if(!(h.ie&&h.win)&&typeof K.createTextNode!=b){t.appendChild(K.createTextNode(v+" {"+r+"}"))}u.appendChild(t);if(h.ie&&h.win&&typeof K.styleSheets!=b&&K.styleSheets.length>0){var q=K.styleSheets[K.styleSheets.length-1];if(typeof q.addRule==Q){q.addRule(v,r)}}}function W(t,q){var r=q?"visible":"hidden";if(e&&C(t)){C(t).style.visibility=r}else{V("#"+t,"visibility:"+r)}}function g(s){var r=/[\\\"<>\.;]/;var q=r.exec(s)!=null;return q?encodeURIComponent(s):s}var D=function(){if(h.ie&&h.win){window.attachEvent("onunload",function(){var w=d.length;for(var v=0;v<w;v++){d[v][0].detachEvent(d[v][1],d[v][2])}var t=i.length;for(var u=0;u<t;u++){X(i[u])}for(var r in h){h[r]=null}h=null;for(var q in swfobject){swfobject[q]=null}swfobject=null})}}();return{registerObject:function(u,q,t){if(!h.w3cdom||!u||!q){return }var r={};r.id=u;r.swfVersion=q;r.expressInstall=t?t:false;N[N.length]=r;W(u,false)},getObjectById:function(v){var q=null;if(h.w3cdom){var t=C(v);if(t){var u=t.getElementsByTagName(Q)[0];if(!u||(u&&typeof t.SetVariable!=b)){q=t}else{if(typeof u.SetVariable!=b){q=u}}}}return q},embedSWF:function(x,AE,AB,AD,q,w,r,z,AC){if(!h.w3cdom||!x||!AE||!AB||!AD||!q){return }AB+="";AD+="";if(c(q)){W(AE,false);var AA={};if(AC&&typeof AC===Q){for(var v in AC){if(AC[v]!=Object.prototype[v]){AA[v]=AC[v]}}}AA.data=x;AA.width=AB;AA.height=AD;var y={};if(z&&typeof z===Q){for(var u in z){if(z[u]!=Object.prototype[u]){y[u]=z[u]}}}if(r&&typeof r===Q){for(var t in r){if(r[t]!=Object.prototype[t]){if(typeof y.flashvars!=b){y.flashvars+="&"+t+"="+r[t]}else{y.flashvars=t+"="+r[t]}}}}f(function(){U(AA,y,AE);if(AA.id==AE){W(AE,true)}})}else{if(w&&!A&&c("6.0.65")&&(h.win||h.mac)){A=true;W(AE,false);f(function(){var AF={};AF.id=AF.altContentId=AE;AF.width=AB;AF.height=AD;AF.expressInstall=w;k(AF)})}}},getFlashPlayerVersion:function(){return{major:h.pv[0],minor:h.pv[1],release:h.pv[2]}},hasFlashPlayerVersion:c,createSWF:function(t,r,q){if(h.w3cdom){return U(t,r,q)}else{return undefined}},removeSWF:function(q){if(h.w3cdom){X(q)}},createCSS:function(r,q){if(h.w3cdom){V(r,q)}},addDomLoadEvent:f,addLoadEvent:R,getQueryParamValue:function(v){var u=K.location.search||K.location.hash;if(v==null){return g(u)}if(u){var t=u.substring(1).split("&");for(var r=0;r<t.length;r++){if(t[r].substring(0,t[r].indexOf("="))==v){return g(t[r].substring((t[r].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(A&&M){var q=C(m);if(q){q.parentNode.replaceChild(M,q);if(l){W(l,true);if(h.ie&&h.win){M.style.display="block"}}M=null;l=null;A=false}}}}}();

	// JSON.js
	
if(!this.JSON){JSON={};}(function(){function f(n){return n<10?'0'+n:n;}if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(key){return this.getUTCFullYear()+'-'+f(this.getUTCMonth()+1)+'-'+f(this.getUTCDate())+'T'+f(this.getUTCHours())+':'+f(this.getUTCMinutes())+':'+f(this.getUTCSeconds())+'Z';};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf();};}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==='string'?c:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);})+'"':'"'+string+'"';}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);}if(typeof rep==='function'){value=rep.call(holder,key,value);}switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==='[object Array]'){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||'null';}v=partial.length===0?'[]':gap?'[\n'+gap+partial.join(',\n'+gap)+'\n'+mind+']':'['+partial.join(',')+']';gap=mind;return v;}if(rep&&typeof rep==='object'){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==='string'){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}v=partial.length===0?'{}':gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+mind+'}':'{'+partial.join(',')+'}';gap=mind;return v;}}if(typeof JSON.stringify!=='function'){JSON.stringify=function(value,replacer,space){var i;gap='';indent='';if(typeof space==='number'){for(i=0;i<space;i+=1){indent+=' ';}}else if(typeof space==='string'){indent=space;}rep=replacer;if(replacer&&typeof replacer!=='function'&&(typeof replacer!=='object'||typeof replacer.length!=='number')){throw new Error('JSON.stringify');}return str('',{'':value});};}if(typeof JSON.parse!=='function'){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==='object'){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v;}else{delete value[k];}}}}return reviver.call(holder,key,value);}cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);});}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return typeof reviver==='function'?walk({'':j},''):j;}throw new SyntaxError('JSON.parse');};}}());

if (!console) {
	var console = {};
	console.log = function(){
	}
}

var video_center_video_id;

if (typeof dj == "undefined") { var dj = {}; }
if (typeof dj.widget == "undefined") { dj.widget = {}; }
if (typeof dj.widget.video == "undefined") { dj.widget.video = {}; }

if (typeof dj.context == "undefined") { dj.context = {}; }
if (typeof dj.context.video == "undefined") {
	dj.context.video = {
		soloVideos : [],
		moreVideos : [],
		carouselIndex : 0,
		carouselVideos : false,
		nowPlaying : false,
		loading : true,
		interval : false,
		autoPlayVideoID : false,
		clickEnabled : true,
		currentlyPlayingVideoId: false,
		players : []
		
	};
}
if (typeof dj.widget.video.video == "undefined") {
	dj.widget.video.video = {
		advertisementDivId : 'advertisement',
		flashPlayerPath : 'http://s.wsj.net/media/swf/',
		domain : 'allthingsd',
		
			//Current and next video id
			
        currentlyPlayingVideoId : '',
		currentlyPlayingVideoIds : [],
		currentlyPlayingCollection : '',
		currentlyPlayingSubCollection : '',
		nextVideoId : ''
		
	};
}
dj.widget.video.video.getName = function() {
	return "dj.widget.video.video";
}

dj.widget.video.video.createAdvertisement = function(imgUrl, link) {
	try {
		swfobject.getObjectById(this.advertisementDivId).loadAd(imgUrl, link);
	}
	catch (e) {
		console.log("Error while loading ad in createAdvertisement : " + e);
		console.error("Error while loading ad in createAdvertisement : " + e);
	}
}

dj.widget.video.video.createAdvertisementFramework = function() {
	if (this.advertisementDivId) {
		if (swfobject.getFlashPlayerVersion().major >= 9) {
			var dim = {w: "336", h: "280"};
			
			swfobject.embedSWF(this.flashPlayerPath + "adPlayer.swf", this.advertisementDivId, dim.w, dim.h, "9.0.0", "", {
					'objName': this.getName(),
                    'movieWidth': dim.w,
                    'movieHeight': dim.h,
                    'host': location.host
                }, {
                    allowscriptaccess: "always",
                    wmode: "opaque"
                }, {});
		} else {
			//this.nonSupportingFlashPlayer(this.advertisementDivId);
		}
	}
}
dj.widget.video.video.playNextVideo = function()
{
	
	if ( jQuery('input#continuous_play').attr('checked') ) {
		
		var index = jQuery.inArray(dj.context.video.currentlyPlayingVideoId, dj.context.video.moreVideos);
		var idToHide = 'li#' + dj.context.video.currentlyPlayingVideoId;
		
		if ( index != -1 && index < dj.context.video.moreVideos.length - 1 ) {
			
			var video_id = dj.context.video.moreVideos[index + 1];
			
				// Get the JSON for the selected video
	
			var url = '/?atd_json=api-video/get_video_info.asp&fields=all&site=atd&guid=' + video_id;
			
			jQuery.getJSON(url, function(data) {
				dj.context.video.soloVideos[video_id] = dj.context.video.newSoloVideo("video-center-player", video_id, data, "video");
		
					// Get the dimensions of the microplayer to display
				
				if ( jQuery('input#autoplay').attr('checked') ) {
					var autoplay = true;		
				} else {
					var autoplay = false;
				}
		
				if ( dj.context.video.isWidescreen(data) ) {
					dj.context.video.showPlayer("video-center-player", video_id, data, 512, 363, true);
				} else {
					dj.context.video.showPlayer("video-center-player", video_id, data, 512, 459, true);
				}
				
					// Display the video title and caption
				
				var html = '<h4 class="subhed">'+data.name+'</h4>';
				
				html += '<p>'+data.description+'</p>';
						
					// Show the date
				
				var date = new Date(data.formattedCreationDate);
				var month = date.getMonth() + 1;
				var day = date.getDate();
				var dateString = "Published on " + month + "/" + day + "/" + date.getFullYear();
				
				html += '<p>'+dateString+'</p>';
		
				if ( data.relatedLinkHref ) {
					html += '<p style="text-align: right;"><a href="'+data.relatedLinkHref+'">Read More &raquo;</a></p>';
				}
				
				jQuery("#video-center-caption").html(html);
				
					// Set the class

				var arr = jQuery('a.video-link');
				
				if ( jQuery(arr).length > 0 ) {
			
					jQuery(arr).each(function(i) {
					
						if ( jQuery(this).parent("li").attr('id') == video_id ) {
							jQuery(this).parent("li").addClass("selected");
						} else {
							jQuery(this).parent("li").removeClass();
						}
						
					});
				}				
			});
		}
		
	}
}

if (typeof dj.context.video.videoCenter == "undefined") {
	dj.context.video.videoCenter = {
		currentPage : 0,
		currentVideo : false,
		nextVideo : false
	
	};
}

dj.context.video.init = function()
{
	dj.widget.video.video.createAdvertisementFramework();
	this.loadVideos();
	this.loadCarousel();
	this.loadVideoCenter();
	this.iphoneVideoNotice();
	
}

dj.context.video.iphoneVideoNotice = function()
{
	if ( dj.context.video.iPhoneCheck() ) {
		var arr = jQuery('.iphone-video-notice');
		
		if ( jQuery(arr).length > 0 ) {
		
			jQuery(arr).each(function(i) {
				jQuery(this).css('display', 'block');
				jQuery(this).html("<em>This video isn't available in iPhone-friendly format. Apologies for the inconvenience.</em>");
			});
		}
	}
}

dj.context.video.loadVideos = function()
{
		// Loads videos in the center column of a page. Looks for <div> objects with
		// the class name of .video-wsj
	 
	var arr = jQuery('.video-wsj');

	if ( jQuery(arr).length > 0 ) {
		
		jQuery(arr).each(function(i) {
		
			var objID = this.id;
	
			if ( objID.indexOf('-') >= 0 ) {
				var guid = objID;
				var url = '/?atd_json=api-video/get_video_info.asp&fields=all&site=atd&guid=' + guid;
				var width = 380;
				var height = 216;
			} else {
				var brightcove_id = objID;
				var url = '/?atd_json=api-video/find_all_videos.asp&fields=all&site=atd&type=brightcoveID&query=' + brightcove_id;
				var width = 320;
				var height = 240;
				var width = 380;
				var height = 285;
			}
	
			if ( jQuery(this).parent().css('width') ) {
				width = jQuery(this).css('width');
				width = width.replace('px', '');
			}
			if ( jQuery(this).parent().css('height') ) {
				height = jQuery(this).css('height');
				height = height.replace('px', '');
			}
			
			jQuery.getJSON(url, function(data) {
	
				if ( data.items && data.items.length >= 1 ) {
					video_id = data.items[0].id;
					jsonData = data.items[0];
				} else {
					jsonData = data;
					video_id = jsonData.id;
				}
				
				dj.context.video.soloVideos[video_id] = dj.context.video.newSoloVideo(objID, video_id, jsonData, "video_emb");
				dj.context.video.showPlayer(objID, video_id, jsonData, width, height, false);
				
			});
		});
	}
}

dj.context.video.loadCarousel = function()
{
	var carousel = jQuery('#video-carousel');
	
	if ( jQuery(carousel).length > 0 ) {
			
		var query = jQuery(carousel).text();
		var url = '/?atd_json=' + query;
	
		if ( jQuery(carousel).attr('class') == 'random' ) {
			var random = true;
		} else {
			var random = false;
		}
		
		jQuery.getJSON(url, function(data) {
			dj.context.video.carouselVideos = data.items;
			dj.context.video.showCarousel(carousel, random);
		});
	}
}

dj.context.video.iPhoneCheck = function()
{
	return (( navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)));
}

dj.context.video.createMobileLink = function(json, width, height)
{
	var mp4 = json.video320kMP4Url;
	var thumbnail = json.videoStillURL;
	
		// Video Still URLs are always 512x288. Adjust height accordingly to the width
	
	if ( (width/height) == (4/3) ) {
		var newHeight = Math.round(width / 512 * height);

		height = newHeight;
	} else {
	
	}

	var html = '<a href="'+mp4+'" title="Tap to view this video"><img src="'+thumbnail+'" width="'+width+'" height="'+height+'" class="aligncenter" alt="" /></a>';

	return html;
}

dj.context.video.showPlayer = function(objID, video_id, json, width, height, autoplay)
{
	if ( objID == 'video-center-player' ) {
		var player_swf = 'http://s.wsj.net/media/swf/main.swf';
		var playerName = 'flashPlayer';
	} else {
		var player_swf = 'http://s.wsj.net/media/swf/microPlayer.swf';
		var playerName = 'microflashPlayer';
	}
	
	if ( dj.context.video.iPhoneCheck() ) {
	
			// Handle viewing on iPhone. Get the MP4 URL and Thumbnail
			
		objID = "#"+objID;
		
		var html = dj.context.video.createMobileLink(json, width, height);
				
		jQuery(objID).html(html);
		
	} else {
		
			// Only do this if click enabled is true
		
		if ( !dj.context.video.clickEnabled ) {
			return false;
		}
		
			// Disable launching any other videos until this one has
			// loaded and started to play
		
		dj.context.video.clickEnabled = false;
		
		if ( !video_id ) {
			video = dj.context.video.soloVideos[objID];
			video_id = video.video_id;
		}
		
		var swf = swfobject.getObjectById(dj.context.video.autoPlayObjID);
				
			// Add objID to the list of currently active video players on the page
			// We'll call getSeek on them to see if we can refresh the site
		
		var pos = jQuery.inArray(objID, dj.context.video.players);
		
		if ( pos == -1 ) {
			var obj = new Array(objID, json.duration, 0);
			
			dj.context.video.players.push(obj);
			
		}
		
		if ( objID == 'video-center-player' && swf ) {
		
				// Just loading a new video
			
			dj.context.video.currentlyPlayingVideoId = video_id;
			dj.context.video.autoPlayVideoID = video_id;
			dj.context.video.autoPlayObjID = objID;
			swf.playVideo(dj.context.video.soloVideos[dj.context.video.autoPlayVideoID].jsonString);
			dj.context.video.clickEnabled = true;
		
		} else {
		
			try {
				swfobject.embedSWF(
					player_swf
					, objID
					, width
					, height
					, "9.0.0"
					, ""
					, {
						//'objName': "dummy",
						'objName': "dj.widget.video.video",
						'videoGUID': video_id,
						'playerid': "4001",
						'allowPlayerPopup': "0",
						'plyMediaEnabled': "1",
						'configURL': "http://wsj.vo.llnwd.net/o28/players/",
						'suppressAds': "0",
						'movieWidth' : ''+width+'',
						'movieHeight' : ''+height+''
					}
					, {
						allowscriptaccess: "always",
						wmode: "opaque",
						base: "http://s.wsj.net/media/swf/",
						//base: "",
						name: ''+playerName+'',
						swLiveConnect: "true",
						seamlesstabbing: "false"
					}
					, {
						id: objID
					}
				);
			} catch ( err ) {
				console.error("Error creating createFlashPlayer.." + err.message);
			}
			
			dj.context.video.currentlyPlayingVideoId = video_id;
			
			if ( autoplay == true ) {
				
				dj.context.video.autoPlayVideoID = video_id;
				dj.context.video.autoPlayObjID = objID;
				
				dj.context.video.interval = setInterval(function() {
				
					var swf = swfobject.getObjectById(dj.context.video.autoPlayObjID);
					
					if ( swf ) {
						try {
							swf.playVideo(dj.context.video.soloVideos[dj.context.video.autoPlayVideoID].jsonString);
							
							dj.context.video.clickEnabled = true;
							clearInterval(dj.context.video.interval);
						} catch ( err ) {
	
						}
					}
				
				}, 500);
			} else {
			
				dj.context.video.clickEnabled = true;
				
				if ( objID != 'video-center-player' ) return;				
				
				dj.context.video.autoPlayVideoID = video_id;
				dj.context.video.autoPlayObjID = objID;
				
				dj.context.video.interval = setInterval(function() {
				
					var swf = swfobject.getObjectById(dj.context.video.autoPlayObjID);
					
					if ( swf ) {
						try {
							swf.gotoStill(dj.context.video.soloVideos[dj.context.video.autoPlayVideoID].jsonString);
							dj.context.video.clickEnabled = true;
							clearInterval(dj.context.video.interval);
						} catch ( err ) {
	
						}
					}
				
				}, 500);
				
			}
		}
	}
}

dj.context.video.newSoloVideo = function (id, video_id, jsonData, videoEmbedType)
{
	// id - objID 
	// video_id - video GUID
	// jsonData - JSON information for the video
	// videoEmbedType - post, video center or carousel (video_emb, video)

	var dimensions = dj.context.video.getVideoDimensions(jsonData);
	
	jsonData.emailPartnerID = 497329;
	jsonData.site = "video.allthingsd.com";
	jsonData.msrc = "";
	jsonData.pageName = ""+jsonData.name;
	jsonData.videoCenterURL = "http://video.allthingsd.com";
	//jsonData.localPath = "";
	
	if ( videoEmbedType == 'video_emb' ) {
		jsonData.embedPlayerURL = "http://s.wsj.net/media/swf/microPlayer.swf";
		jsonData.adFrmt = "frmt=0;";
		jsonData.playerName = "video_articleembed"; // Carousel Video
	} else {
		jsonData.embedPlayerURL = "http://s.wsj.net/media/swf/main.swf";
		jsonData.adFrmt = "frmt=2;";
		jsonData.playerName = "video_videocenter"; // Video Center
	}
	
	jsonData.embedConfigURL = "http://wsj.vo.llnwd.net/o28/players/";
	jsonData.embedPlayerID = "4001";
	jsonData.embedName = "microflashPlayer";
	jsonData.embedBaseURL = "http://s.wsj.net/media/swf/";
	jsonData.embedHeight = dimensions.height;
	jsonData.embedWidth = dimensions.width;
	jsonData.larsID = 94;
	jsonData.larsAdTrackingID = 1262;
	jsonData.prop5 = "";
	jsonData.prop6 = "";
	jsonData.prop10 = "";
	jsonData.prop11 = "";
	jsonData.prop19 = ""+videoEmbedType; // video (center), video_emb
	jsonData.prop24 = "Edition_North_America_USA";
	jsonData.prop25 = null;
	jsonData.prop27 = "WSJ_free";
	
	jsonData.prop2 = "ATD_" + jsonData['allthingsd-section'];
	
	if ( jsonData['allthingsd-subsection'] == null ) {
		jsonData.prop26 = "ATD_" + jsonData['allthingsd-section'];
		jsonData.prop3 = "WSJ_Video_Video_" + jsonData['allthingsd-section'];
		jsonData.prop22 = "WSJ_Video_Video_" + jsonData['allthingsd-section'];
	} else {
		jsonData.prop26 = "ATD_" + jsonData['allthingsd-subsection'];
		jsonData.prop3 = "WSJ_Video_Video_" + jsonData['allthingsd-subsection'];
		jsonData.prop22 = "WSJ_Video_Video_" + jsonData['allthingsd-subsection'];
	}
	
	jsonData.suppressAds = "0";
				
	var soloVideo = {
	
		id : id,
		video_id : video_id,
		jsonData : jsonData,
		jsonString : JSON.stringify(jsonData),
		getJSON : function(video_id) {
			
			return this.jsonString;

		}
	};
	
	return soloVideo;
}

function splitTime(a) 
{ 
	var hours=Math.floor(a/3600); 
	var minutes=Math.floor(a/60)-(hours*60); 
	var seconds=a-(hours*3600)-(minutes*60); 
	
	if (hours==0) {hours='';}
	if (minutes==0) {minutes='';}
	if (minutes<10) {minutes='0'+minutes;}
	if (seconds==0) {seconds=0;}
	if (seconds<10) {seconds='0'+seconds;}

	if (hours==0)	
		return minutes+':'+seconds;
	else 
		return hours+':'+minutes+':'+seconds;
} 

dj.context.video.playCarouselItem = function(id, width, height, index)
{
		// Get reference to the active carousel
	
	var carousel_item = jQuery('#video-carousel-item');	
	var carousel_items = jQuery('#video-carousel-list li');
	
	if ( !dj.context.video.clickEnabled ) {
		return false;
	}
	
	jQuery(carousel_items).each(function(i) {
		
		if ( i == index ) {
		
			var item = dj.context.video.carouselVideos[i];
			var id = item.id;
			
			jQuery(this).addClass("selected");
			jQuery('#video-carousel p.caption').html('<strong>Now Playing: </strong>'+item.name);

		} else {
			jQuery(this).removeClass();
		}
		
	});
		
	var soloVideo = dj.context.video.soloVideos[id];
	var dimensions = dj.context.video.getVideoDimensions(soloVideo.jsonData);
	var carouselPlayer = swfobject.getObjectById('video-carousel-item');
	
	carouselPlayer.width = dimensions.width;
	carouselPlayer.height = dimensions.height;
	
	dj.context.video.showPlayer('video-carousel-item', id, soloVideo.jsonData, width, height, true);
		
	return false;
	
}

dj.context.video.isWidescreen = function(item)
{
	// Determines whether or not the video is in 4:3 or 16:9
	// aspect ratio. Each section is different, so we have a
	// big switch statement.
	//
	
	var comparisonDate;
	var itemDate = new Date(item.formattedCreationDate);
	
	switch (item['allthingsd-section']) {
		case "BoomTown":
			comparisionDate = new Date('4/28/2009 12:00:00 PM');
			break;
		case "Digital Daily":
			comparisionDate = new Date('3/26/2009 12:00:00 PM');
			break;
		case "MediaMemo":
			comparisionDate = new Date('3/15/2009 12:00:00 PM');
			break;
		case "Walt Mossberg":
		case "D Conference":
			switch ( item['allthingsd-subsection'] ) {
				case "Personal Technology":
					comparisionDate = new Date('9/10/2008 7:00:00 PM');
					break;
				case "Mossberg Solution":
					comparisionDate = new Date('11/4/2008 12:00:00 PM');
					break;
				case "Mossblog":
					comparisionDate = new Date('5/7/2009 12:00:00 PM');
					break;
				case "D5":
				case "D6":
				case "D7":
				default:
					comparisionDate = new Date('5/14/2009 12:00:00 PM');
					break;				
			}
			break;
		default:
			comparisionDate = new Date('5/14/2009 12:00:00 PM');
			break;
	}
		
	if ( itemDate - comparisionDate > 0 ) {
		return true;
	} else {
		return false;
	}
}

dj.context.video.getVideoDimensions = function(carousel_item)
{
	if ( dj.context.video.isWidescreen(carousel_item) ) {
		return { width: 320, height: 181 };
	} else {
		return { width: 320, height: 240 };
	}
}

dj.context.video.displayCarouselList = function(index)
{
	// Displays a list of videos in the video carousel
	// Clicking on a video will load and play it in the
	// video carousel player.
	//
	
	html = '<ul id="video-carousel-list">';
	
	var limit = 4;
	var count = 0;
	
	if ( !index ) index = 0;
	
	dj.context.video.carouselIndex = index;
	
	for ( index; index < this.carouselVideos.length && count < limit; index++ ) {

		var item = this.carouselVideos[index];
		var thumbnail = item.thumbnailURL;
		var id = item.id;
		
		if ( index == 0 ) {
			html += '<li class="selected">';
		} else {
			html += '<li>';
		}
		
		var dimensions = dj.context.video.getVideoDimensions(item);
		var width = dimensions.width;
		var height = dimensions.height;
		var aspect = width / height;
		
		if ( dj.context.video.iPhoneCheck() ) {
			
			html += dj.context.video.createMobileLink(item, 150, 84);
			html += '<br /><a href="'+item.video320kMP4Url+'">'+item.name+'</a>';
			
		} else {
			html += '<a href="javascript:void();" onclick="dj.context.video.playCarouselItem(\''+item.id+'\','+width+','+height+','+index+'); return false;" title="'+item.name+'"><img src="'+thumbnail+'" alt="" width="150" height="84" /></a><br /><a href="javascript:void();" onclick="wsjdn_carousel_play(\''+item.id+'\','+width+','+height+','+index+'); return false;" title="'+item.name+'">'+item.name+'</a>';
		}
		html += '</li>';
		
			// Add the video to the list of videos attached to the video carousel
		
		dj.context.video.soloVideos[id] = dj.context.video.newSoloVideo('video-carousel-item', id, item, "video_emb");
		
		count++;
	}
	
	html += '</ul>';
	html += '<div class="clearing"></div>';
	html += '</div>';
	
	return html;
}

dj.context.video.showCarousel = function(carousel, random)
{	
		// Randomize the carousel items
		
	if ( random ) {
		var d = new Date();
		this.carouselVideos.sort(function() {return 0.5 - Math.random()});
	}
	
	
		// Get the video to display as the starting carousel item
		
	if ( this.carouselVideos && this.carouselVideos.length >= 1 ) {
		var carousel_item = this.carouselVideos[0];
	} else {
		var carousel_item = data;
	}
	
	dj.context.video.soloVideos['video-carousel-item'] = dj.context.video.newSoloVideo('video-carousel-item', carousel_item.id, carousel_item, "video_emb");	
	
	
		// Determine whether this is an old video imported from Brightcove
		// or a new video imported directly into WSJ. Choose 4:3 or 16:9 player
		// accordingly
	
	var dimensions = dj.context.video.getVideoDimensions(carousel_item);
	var width = dimensions.width;
	var height = dimensions.height;

	jQuery(carousel).css('width', '');
	jQuery(carousel).css('height', '');	
	
		// Set the aspect ratio of the carousel
		
	var aspect = width / height;
	
	if ( true || aspect > 1.4 ) {
		html = '<div id="video-carousel-container">';	
	} else {
		html = '<div id="video-carousel-container" class="standard">';
	}
	
	html += '<div id="video-carousel-item"></div>';
	html += '<p class="caption"><strong>Now Playing: </strong>'+carousel_item.name+' ('+splitTime(carousel_item.duration)+')</p>';

		// Display the 2x2 grid of extra videos

	html += dj.context.video.displayCarouselList(0);
	
	jQuery(carousel).html(html);
		
		// Display the carousel player
		
	dj.context.video.showPlayer('video-carousel-item', carousel_item.id, carousel_item, width, height, false);
	
	jQuery(carousel).css('visibility', 'visible');
}


dj.context.video.showVideoCenterPage = function(pageNum)
{
	var pages = jQuery('div.video-page');
	var prevPageNum = dj.context.video.videoCenter.currentPage;
		
	dj.context.video.videoCenter.currentPage = pageNum;
	
	var prevPage = jQuery("#video-page-"+prevPageNum);
	var nextPage = jQuery("#video-page-"+pageNum);
	
		// Update the selection
	
	jQuery("li#pagenum-top-"+prevPageNum).removeClass();
	jQuery("li#pagenum-top-"+pageNum).addClass("selected");
	jQuery("li#pagenum-bottom-"+prevPageNum).removeClass();
	jQuery("li#pagenum-bottom-"+pageNum).addClass("selected");
	
		// Hide the old page and reveal the new page
		
	jQuery(prevPage).hide("fast");
	jQuery(nextPage).show("fast");

	return false;
}

dj.context.video.loadVideoCenter = function()
{
	var videoCenter = jQuery("#video-center");
	
	if ( jQuery(videoCenter).length == 0 ) return;
	
	if ( video_center_video_id ) {
		var video_id = video_center_video_id;
	} else {
		var video_id = jQuery("#video-page-0 ul li.selected").attr("id");
	}
	
		// Handle the autoplay and play next video checkboxes
	
	jQuery('input#autoplay').click( function() {
		var val = ( this.checked ) ? 1 : 0;
		setCookie('atd_videocenter_autoplay', val);
		return true;
	});
	
	jQuery('input#continuous_play').click( function() {
		var val = ( this.checked ) ? 1 : 0;
		setCookie('atd_videocenter_continuous', val);
		return true;
	});
	
	if ( getCookie('atd_videocenter_autoplay') == 1 ) {
		jQuery('input#autoplay').attr('checked', true);
	} else {
		jQuery('input#autoplay').attr('checked', false);	
	}
	
	if ( getCookie('atd_videocenter_continuous') == 1 ) {
		jQuery('input#continuous_play').attr('checked', true);
	} else {
		jQuery('input#continuous_play').attr('checked', false);
	}
	
		// Get the JSON for the selected video
	
	var url = '/?atd_json=api-video/get_video_info.asp&fields=all&site=atd&guid=' + video_id;
	
	jQuery.getJSON(url, function(data) {
		dj.context.video.soloVideos[video_id] = dj.context.video.newSoloVideo("video-center-player", video_id, data, "video");

			// Get the dimensions of the microplayer to display
		
		if ( video_center_video_id || jQuery('input#autoplay').attr('checked') ) {
			var autoplay = true;		
		} else {
			var autoplay = false;
		}

		if ( dj.context.video.isWidescreen(data) ) {
			dj.context.video.showPlayer("video-center-player", video_id, data, 512, 363, autoplay);
		} else {
			dj.context.video.showPlayer("video-center-player", video_id, data, 512, 459, autoplay);
		}
		
			// Display the video title and caption
		
		var html = '<h4 class="subhed">'+data.name+'</h4>';
		
		html += '<p>'+data.description+'</p>';
				
			// Show the date
		
		var date = new Date(data.formattedCreationDate);
		var month = date.getMonth() + 1;
		var day = date.getDate();
		var dateString = "Published on " + month + "/" + day + "/" + date.getFullYear();
		
		html += '<p>'+dateString+'</p>';

		if ( data.relatedLinkHref ) {
			html += '<p style="text-align: right;"><a href="'+data.relatedLinkHref+'">Read More &raquo;</a></p>';
		}
		
		jQuery("#video-center-caption").html(html);
		
	});
	
		// Set up paging
		
	var pageNumbersTop = jQuery('ul#video-page-numbers-top li a');
	var pageNumbersBottom = jQuery('ul#video-page-numbers-bottom li a');
	
	if ( jQuery(pageNumbersTop).length > 0 ) {
		jQuery(pageNumbersTop).each(function(i) {
			jQuery(this).click(function() {
				dj.context.video.showVideoCenterPage(i);
				return false;
			});
		});
	}
	if ( jQuery(pageNumbersBottom).length > 0 ) {
		jQuery(pageNumbersBottom).each(function(i) {
			jQuery(this).click(function() {
				dj.context.video.showVideoCenterPage(i);
				return false;
			});
		});
	}
	
		// Set up the onlick handlers for the video thumbnails
	
	var arr = jQuery('a.video-link');

	if ( jQuery(arr).length > 0 ) {
			
		jQuery(arr).each(function(i) {
			
			var vidID = jQuery(this).parent('li').attr('id');

			if ( vidID != '' && jQuery.inArray(vidID, dj.context.video.moreVideos) == -1 )
				dj.context.video.moreVideos.push(vidID);
			
			jQuery(this).click(function() {
			
				if ( !dj.context.video.clickEnabled ) {
					return false;
				}
				
				var parent = jQuery(this).parent();
				var video_id = jQuery(parent).attr("id");
				var url = '/?atd_json=api-video/get_video_info.asp&fields=all&site=atd&guid=' + video_id;
				
				if ( dj.context.video.iPhoneCheck() ) {
				
						// Handle clicking from the iPhone
						
					jQuery.getJSON(url, function(data) {
						var mp4 = data.	video320kMP4Url;
						window.location = mp4;
					});
				
				} else {
				
						// Select the correct thumbnail
					
					var thumbs = jQuery('a.video-link img');
					
					jQuery(arr).each(function(j) { jQuery(this).parent("li").removeClass(); });
					jQuery(this).parent("li").addClass("selected");
	
					jQuery.getJSON(url, function(data) {
						var player = swfobject.getObjectById("video-center-player");
					
						if ( player ) {
						
							if ( !dj.context.video.soloVideos[video_id] ) {
								dj.context.video.soloVideos[video_id] = dj.context.video.newSoloVideo("video-center-player", video_id, data, "video");
							}
							
							var captionHTML = '<h4 class="subhed">'+data.name+'</h4>'+'<p>'+data.description+'</p>';

							var date = new Date(data.formattedCreationDate);
							var month = date.getMonth() + 1;
							var day = date.getDate();
							var dateString = "Published on " + month + "/" + day + "/" + date.getFullYear();
							
							captionHTML += '<p>'+dateString+'</p>';
		
							if ( data.relatedLinkHref ) {
								captionHTML += '<p style="text-align: right;"><a href="'+data.relatedLinkHref+'">Read More &raquo;</a></p>';
							}


							jQuery("#video-center-caption").html(captionHTML);
							
								// Resize the player
							
							if ( dj.context.video.isWidescreen(data) ) {
								jQuery(player).attr("width", 512);
								jQuery(player).attr("height", 363);
							} else {
								jQuery(player).attr("width", 512);
								jQuery(player).attr("height", 459);
							}
							
							if ( dj.context.video.isWidescreen(data) ) {
								dj.context.video.showPlayer("video-center-player", video_id, data, 512,363, true);
							} else {
								dj.context.video.showPlayer("video-center-player", video_id, data, 512, 459, true);
							}
							
								// Scroll to top of video
							
							var divOffset = jQuery('#content-banner').offset().top;
							
							jQuery('html, body').animate({scrollTop: divOffset }, 'fast');
						}
					});
				}
				
				return false;
			});
		});
	}
}

jQuery(document).ready(function() { dj.context.video.init(); });
