/*
 * SimpleModal 1.3.5 - jQuery Plugin
 * http://www.ericmmartin.com/projects/simplemodal/
 * Copyright (c) 2010 Eric Martin (http://twitter.com/EricMMartin)
 * Dual licensed under the MIT and GPL licenses
 * Revision: $Id: jquery.simplemodal.js 245 2010-03-25 20:41:15Z emartin24 $
 */
;(function($){var ie6=$.browser.msie&&parseInt($.browser.version)==6&&typeof window['XMLHttpRequest']!="object",ieQuirks=null,w=[];$.modal=function(data,options){return $.modal.impl.init(data,options);};$.modal.close=function(){$.modal.impl.close();};$.fn.modal=function(options){return $.modal.impl.init(this,options);};$.modal.defaults={appendTo:'body',focus:true,opacity:50,overlayId:'simplemodal-overlay',overlayCss:{},containerId:'simplemodal-container',containerCss:{},dataId:'simplemodal-data',dataCss:{},minHeight:null,minWidth:null,maxHeight:null,maxWidth:null,autoResize:false,autoPosition:true,zIndex:1000,close:true,closeHTML:'<a class="modalCloseImg" title="Close"></a>',closeClass:'simplemodal-close',escClose:true,overlayClose:false,position:null,persist:false,modal:true,onOpen:null,onShow:null,onClose:null};$.modal.impl={o:null,d:{},init:function(data,options){var s=this;if(s.d.data){return false;}ieQuirks=$.browser.msie&&!$.boxModel;s.o=$.extend({},$.modal.defaults,options);s.zIndex=s.o.zIndex;s.occb=false;if(typeof data=='object'){data=data instanceof jQuery?data:$(data);s.d.placeholder=false;if(data.parent().parent().size()>0){data.before($('<span></span>').attr('id','simplemodal-placeholder').css({display:'none'}));s.d.placeholder=true;s.display=data.css('display');if(!s.o.persist){s.d.orig=data.clone(true);}}}else if(typeof data=='string'||typeof data=='number'){data=$('<div></div>').html(data);}else{alert('SimpleModal Error: Unsupported data type: '+typeof data);return s;}s.create(data);data=null;s.open();if($.isFunction(s.o.onShow)){s.o.onShow.apply(s,[s.d]);}return s;},create:function(data){var s=this;w=s.getDimensions();if(s.o.modal&&ie6){s.d.iframe=$('<iframe src="javascript:false;"></iframe>').css($.extend(s.o.iframeCss,{display:'none',opacity:0,position:'fixed',height:w[0],width:w[1],zIndex:s.o.zIndex,top:0,left:0})).appendTo(s.o.appendTo);}s.d.overlay=$('<div></div>').attr('id',s.o.overlayId).addClass('simplemodal-overlay').css($.extend(s.o.overlayCss,{display:'none',opacity:s.o.opacity/100,height:s.o.modal?w[0]:0,width:s.o.modal?w[1]:0,position:'fixed',left:0,top:0,zIndex:s.o.zIndex+1})).appendTo(s.o.appendTo);s.d.container=$('<div></div>').attr('id',s.o.containerId).addClass('simplemodal-container').css($.extend(s.o.containerCss,{display:'none',position:'fixed',zIndex:s.o.zIndex+2})).append(s.o.close&&s.o.closeHTML?$(s.o.closeHTML).addClass(s.o.closeClass):'').appendTo(s.o.appendTo);s.d.wrap=$('<div></div>').attr('tabIndex',-1).addClass('simplemodal-wrap').css({height:'100%',outline:0,width:'100%'}).appendTo(s.d.container);s.d.data=data.attr('id',data.attr('id')||s.o.dataId).addClass('simplemodal-data').css($.extend(s.o.dataCss,{display:'none'})).appendTo('body');data=null;s.setContainerDimensions();s.d.data.appendTo(s.d.wrap);if(ie6||ieQuirks){s.fixIE();}},bindEvents:function(){var s=this;$('.'+s.o.closeClass).bind('click.simplemodal',function(e){e.preventDefault();s.close();});if(s.o.modal&&s.o.close&&s.o.overlayClose){s.d.overlay.bind('click.simplemodal',function(e){e.preventDefault();s.close();});}$(document).bind('keydown.simplemodal',function(e){if(s.o.modal&&s.o.focus&&e.keyCode==9){s.watchTab(e);}else if((s.o.close&&s.o.escClose)&&e.keyCode==27){e.preventDefault();s.close();}});$(window).bind('resize.simplemodal',function(){w=s.getDimensions();s.setContainerDimensions(true);if(ie6||ieQuirks){s.fixIE();}else if(s.o.modal){s.d.iframe&&s.d.iframe.css({height:w[0],width:w[1]});s.d.overlay.css({height:w[0],width:w[1]});}});},unbindEvents:function(){$('.'+this.o.closeClass).unbind('click.simplemodal');$(document).unbind('keydown.simplemodal');$(window).unbind('resize.simplemodal');this.d.overlay.unbind('click.simplemodal');},fixIE:function(){var s=this,p=s.o.position;$.each([s.d.iframe||null,!s.o.modal?null:s.d.overlay,s.d.container],function(i,el){if(el){var bch='document.body.clientHeight',bcw='document.body.clientWidth',bsh='document.body.scrollHeight',bsl='document.body.scrollLeft',bst='document.body.scrollTop',bsw='document.body.scrollWidth',ch='document.documentElement.clientHeight',cw='document.documentElement.clientWidth',sl='document.documentElement.scrollLeft',st='document.documentElement.scrollTop',s=el[0].style;s.position='absolute';if(i<2){s.removeExpression('height');s.removeExpression('width');s.setExpression('height',''+bsh+' > '+bch+' ? '+bsh+' : '+bch+' + "px"');s.setExpression('width',''+bsw+' > '+bcw+' ? '+bsw+' : '+bcw+' + "px"');}else{var te,le;if(p&&p.constructor==Array){var top=p[0]?typeof p[0]=='number'?p[0].toString():p[0].replace(/px/,''):el.css('top').replace(/px/,'');te=top.indexOf('%')==-1?top+' + (t = '+st+' ? '+st+' : '+bst+') + "px"':parseInt(top.replace(/%/,''))+' * (('+ch+' || '+bch+') / 100) + (t = '+st+' ? '+st+' : '+bst+') + "px"';if(p[1]){var left=typeof p[1]=='number'?p[1].toString():p[1].replace(/px/,'');le=left.indexOf('%')==-1?left+' + (t = '+sl+' ? '+sl+' : '+bsl+') + "px"':parseInt(left.replace(/%/,''))+' * (('+cw+' || '+bcw+') / 100) + (t = '+sl+' ? '+sl+' : '+bsl+') + "px"';}}else{te='('+ch+' || '+bch+') / 2 - (this.offsetHeight / 2) + (t = '+st+' ? '+st+' : '+bst+') + "px"';le='('+cw+' || '+bcw+') / 2 - (this.offsetWidth / 2) + (t = '+sl+' ? '+sl+' : '+bsl+') + "px"';}s.removeExpression('top');s.removeExpression('left');s.setExpression('top',te);s.setExpression('left',le);}}});},focus:function(pos){var s=this,p=pos||'first';var input=$(':input:enabled:visible:'+p,s.d.wrap);input.length>0?input.focus():s.d.wrap.focus();},getDimensions:function(){var el=$(window);var h=$.browser.opera&&$.browser.version>'9.5'&&$.fn.jquery<='1.2.6'?document.documentElement['clientHeight']:$.browser.opera&&$.browser.version<'9.5'&&$.fn.jquery>'1.2.6'?window.innerHeight:el.height();return[h,el.width()];},getVal:function(v){return v=='auto'?0:v.indexOf('%')>0?v:parseInt(v.replace(/px/,''));},setContainerDimensions:function(resize){var s=this;if(!resize||(resize&&s.o.autoResize)){var ch=$.browser.opera?s.d.container.height():s.getVal(s.d.container.css('height')),cw=$.browser.opera?s.d.container.width():s.getVal(s.d.container.css('width')),dh=s.d.data.outerHeight(true),dw=s.d.data.outerWidth(true);var mh=s.o.maxHeight&&s.o.maxHeight<w[0]?s.o.maxHeight:w[0],mw=s.o.maxWidth&&s.o.maxWidth<w[1]?s.o.maxWidth:w[1];if(!ch){if(!dh){ch=s.o.minHeight;}else{if(dh>mh){ch=mh;}else if(dh<s.o.minHeight){ch=s.o.minHeight;}else{ch=dh;}}}else{ch=ch>mh?mh:ch;}if(!cw){if(!dw){cw=s.o.minWidth;}else{if(dw>mw){cw=mw;}else if(dw<s.o.minWidth){cw=s.o.minWidth;}else{cw=dw;}}}else{cw=cw>mw?mw:cw;}s.d.container.css({height:ch,width:cw});if(dh>ch||dw>cw){s.d.wrap.css({overflow:'auto'});}}if(s.o.autoPosition){s.setPosition();}},setPosition:function(){var s=this,top,left,hc=(w[0]/2)-(s.d.container.outerHeight(true)/2),vc=(w[1]/2)-(s.d.container.outerWidth(true)/2);if(s.o.position&&Object.prototype.toString.call(s.o.position)==="[object Array]"){top=s.o.position[0]||hc;left=s.o.position[1]||vc;}else{top=hc;left=vc;}s.d.container.css({left:left,top:top});},watchTab:function(e){var s=this;if($(e.target).parents('.simplemodal-container').length>0){s.inputs=$(':input:enabled:visible:first, :input:enabled:visible:last',s.d.data[0]);if((!e.shiftKey&&e.target==s.inputs[s.inputs.length-1])||(e.shiftKey&&e.target==s.inputs[0])||s.inputs.length==0){e.preventDefault();var pos=e.shiftKey?'last':'first';setTimeout(function(){s.focus(pos);},10);}}else{e.preventDefault();setTimeout(function(){s.focus();},10);}},open:function(){var s=this;s.d.iframe&&s.d.iframe.show();if($.isFunction(s.o.onOpen)){s.o.onOpen.apply(s,[s.d]);}else{s.d.overlay.show();s.d.container.show();s.d.data.show();}s.focus();s.bindEvents();},close:function(){var s=this;if(!s.d.data){return false;}s.unbindEvents();if($.isFunction(s.o.onClose)&&!s.occb){s.occb=true;s.o.onClose.apply(s,[s.d]);}else{if(s.d.placeholder){var ph=$('#simplemodal-placeholder');if(s.o.persist){ph.replaceWith(s.d.data.removeClass('simplemodal-data').css('display',s.display));}else{s.d.data.hide().remove();ph.replaceWith(s.d.orig);}}else{s.d.data.hide().remove();}s.d.container.hide().remove();s.d.overlay.hide().remove();s.d.iframe&&s.d.iframe.hide().remove();s.d={};}}};})(jQuery);


//
//
//	USA TODAY Modal Video 
//	author: christopher kamsler
//
//	Depends:
//		- jQuery
//		- Brightcove
//		- Flash
//		- jQuery.SimpleModal plugin
//
//

(function($, window){

	// utils...
	function hasAttribute(node, attribute) {
		if (typeof node.hasAttribute !== "undefined") { return node.hasAttribute(attribute); }
		else if (typeof node.getAttribute !== "undefined")
		{
			return !!(node.getAttribute(attribute));
		}

		return false;
	}

	function AdBuilder(adXML, ssts) {

		function getIFrame(src) {
			return "<iframe src='"+src+"' width='300' height='250' marginheight='0' "
				   + "hspace='0' vspace='0' frameborder='0' scrolling='no'></iframe>";
		}

		function getSWF(movieUrl, clickThrough) {
			return "<object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' "
						+ "codebase='http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0' "
						+ "width='300' height='250' align='middle'>"
					+ "<param name='allowScriptAccess' value='always' />"	
					+ "<param name='movie' value='"+ movieUrl + "' />"  
					+ "<param name='quality' value='high' />"
					+ "<param name='bgcolor' value='#ffffff' />"
					+ "<param name='wmode' value='transparent' />"
					+ "<param name='FlashVars' value='clickTag="+ clickThrough + "' />"
					+ "<embed src='" + movieUrl + "' quality='high' bgcolor='#ffffff' "
						+ "width='300' height='250' name='expandedBanner' align='middle' allowScriptAccess='always' "
						+ "wmode='opaque' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer' FlashVars='clickTag="+clickThrough+"' />"
				   + "</object>";		
		}

		function getLinkedImage(imageUrl, clickThrough) {
			return "<a href='" + clickThrough + "' target='_blank'><img src='" + imageUrl + "' /></a>";
		}

		function getDefault(sstsValue){
			var url = "http://gannett.gcion.com/adiframe/3.0/5111.1/778078/0/0/header=yes;cc=2;alias=www.usatoday.com/video/"
					+ sstsValue
					+ "/immersive_Video_Banner_300;cookie=info;key=42806346001;adct=204;grp=12345";

			return getIFrame(url);		
		}

		function parseCompanion(element) {

			if (hasAttribute(element, "type"))
			{
				var type = element.getAttribute("type");

				if (type === "iframe")
				{
					return getIFrame(element.firstChild.nodeValue);
				}
			}
			
			return undefined;
		}


		var companionAd,
			videoAd,
			doc = (function() {
								if (window.XMLHttpRequest)
								{
									return (new DOMParser()).parseFromString(adXML, "text/xml");
								}
								else if (window.ActiveXObject)
								{
									var xml = new ActiveXObject("Microsoft.XMLDOM");
									xml.async = false;
									xml.loadXML(adXML);
									return xml;
								}

								return undefined;
				  })();

		if (typeof doc !== "undefined") {

			var root = doc.firstChild;
			var nodes = root.children || root.childNodes;

			videoAd = {};

			videoAd.type = "videoAd";
			videoAd.duration = $(root).attr("duration") || 15;
			videoAd.trackPointTime = $(root).attr("trackPointTime") || 0;

			if (hasAttribute(root, "trackStartURLs")) { videoAd.trackStartURLs = root.getAttribute("trackStartURLs").split(","); }
			if (hasAttribute(root, "trackMidURLs"))   { videoAd.trackMidURLs = root.getAttribute("trackMidURLs").split(","); }
			if (hasAttribute(root, "trackEndURLs"))   { videoAd.trackEndURLs = root.getAttribute("trackEndURLs").split(","); }
			if (hasAttribute(root, "trackPointURLs")) { videoAd.trackPointURLs = root.getAttribute("trackPointURLs").split(","); }

			$(nodes).each(function(i, element){	
				switch (element.nodeName) {				
					case "videoURL":
				   		videoAd.videoURL = element.firstChild.nodeValue;
						break;
					case "videoClickURL":
						videoAd.videoClickURL = element.firstChild.nodeValue;
						break;
					case "expandedBannerURL":
						companionAd = parseCompanion(element); // TODO: anything other than iframe (swf, linked image, etc.)...
						break;
				}
			});			
		}

		if (typeof companionAd === "undefined") {
			companionAd = getDefault(ssts);
		}

		return {
			companion: (function(){ return companionAd; })(),	
			video: (function(){ return videoAd; })()
		};	
	}


	window.AdBuilder = AdBuilder;	
 
})(jQuery, window);

var jModalVideo = (function($, window){

	var videoPlayer, advertising, social,
		experienceId,
		playerId = "modalVideoPlayer",
		params,	
		scripts = ["http://admin.brightcove.com/js/BrightcoveExperiences.js",
				   "http://admin.brightcove.com/js/APIModules_all.js"];

	var css = "#simplemodal-container a.modalCloseImg { "
				+ "background:url(http://i.usatoday.net/_common/_images/close.png) no-repeat; cursor:pointer; "
				+ "width:35px; height:35px;"
				+ "display:inline; "
				+ "position:absolute; z-index:3200; "
				+ "top:-10px; right:-10px; "
				;
	
	// technically $.browser is deprecated according to the docs
	if ($.browser.msie && $.browser.version < 7)
	{
		css += "background:none; "
			 + "filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://i.usatoday.net/_common/_images/close.png', sizingMethod='scale');"; 
	}
					
	css += "} ";


	var defaultParams = {
					"autoStart"			: "true",
					"width"				: "600",
					"isVid"				: "true",
					"dynamicStreaming"	: "true",
					"bgcolor"			: "#000000",
					"adServerURL"		: "http://gannett.gcion.com/addyn/3.0/5111.1/778078/0/0/header=yes;cc=2;alias=www.usatoday.com/video/#section#/immersive_PreRoll;cookie=info;key=42806346001;adct=204;grp=12345",
					"publisherID"		: "29906170001",
					"division"			: "usatoday",
					"omnitureAccountID" : "usatodayprod",
					"sstsCode"			: "news",
					"linkBaseURL"		: "http://www.usatoday.com/video/index.htm"
				 };


	function createPlayer(container, params) {

		var embed = brightcove.createElement("object"),
			parameter;

	   	embed.id = playerId;

		for (var i in params) {

			parameter = brightcove.createElement("param");
			parameter.name = i;
			parameter.value = params[i];

			embed.appendChild(parameter);
		}

		brightcove.createExperience(embed, container, true);
	}

	// brightcove player onTemplateLoad function
	window.onTemplateLoaded = function(id) {

		experienceId = id;

		var experience = brightcove.getExperience(id);

		advertising = experience.getModule(APIModules.ADVERTISING);
		social		= experience.getModule(APIModules.SOCIAL);
		videoPlayer = experience.getModule(APIModules.VIDEO_PLAYER);

		advertising.enableExternalAds();	
		advertising.addEventListener(BCAdvertisingEvent.EXTERNAL_AD, function(response) {
		
			if (typeof response !== "undefined" && response.hasOwnProperty("ad")) {
				
				var builder = new AdBuilder(response.ad, params.sstsCode);

				if (builder.video !== "undefined") {
					advertising.showAd(builder.video);
				} else {
					advertising.resumeAfterExternalAd();
				}

				if (builder.companion !== "undefined") {
					$("#modalCompanion").html(builder.companion);
				}
			}
			else {
					advertising.resumeAfterExternalAd();
			}

		});	

		videoPlayer.addEventListener(BCMediaEvent.CHANGE, function(e){
		
			var link = social.getLink();

			if (link.indexOf("?") != -1) {
				link = link.substring(0, link.indexOf("?"));
			}

			if (typeof e !== "undefined" && e.hasOwnProperty("media") && e.media.id)
			{
				link += "?bctid=" + e.media.id;
			}

			social.setLink(link);
		});

	}


	// ready...
	$(function(){

		// load non-blocking scripts
		$.each(scripts, function(indexInArray, valueOfElement){
			$.ajax({
					type: "GET",
					url: valueOfElement,
					cache: true,
					dataType: "script"
				   });
		});

		var script = document.getElementsByTagName("script")[0],
			style = document.createElement("style");

		style.type = "text/css";
		
		if (style.styleSheet) {
		    style.styleSheet.cssText = css;
		} else {
			style.appendChild(document.createTextNode(css));
		}
		
		script.parentNode.insertBefore(style, script);

	});		


	return {
		show: function(paramOptions, opts){  

			var height = 384,
				companionTop = 3;

			params = $.extend(defaultParams, paramOptions);
			params.adServerURL = params.adServerURL.replace("#section#", params.sstsCode);

			if (params.hasOwnProperty("@videoPlayer"))
			{
				params.playerID = "86874850001"
			}
			else if (params.hasOwnProperty("@videoList"))
			{
				height = 585;
				companionTop = 33;
				params.playerID = "85331262001";
				params.isUI = "true";
			}

			params.height = height - 10;
			
			var html = "<div style='position:relative;'>"
							+ "<div id='modalCompanion' style='position:absolute;top:"+companionTop+"px;right:5px;width:300px;height:250px;background:#000;'></div>"
							+ "<div id='modalVideo' style='position:absolute;top:3px;left:5px;'></div>"
					   + "</div>";

			$(html)
				.modal({
					containerCss:{ backgroundColor:"#000",padding:"10px", width:"930px",height:(height + "px") },
					overlayClose: true,
					overlayCss: {backgroundColor:"#000000"},
					zIndex: 87654321,

					onClose: function() {
						if (typeof videoPlayer !== "undefined")
						{
							videoPlayer.pause(true);
							brightcove.removeExperience(experienceId);
						}

						delete params.playerID;
						delete params["@videoPlayer"];
						delete params["@videoList"];

						$.modal.close();
					},

					onShow: function(dialog) {
								var container = document.getElementById("modalVideo");

								if (typeof container !== "undefined") {
									createPlayer(container, params);
								}
							}
				});		   
		}
	};
				
})(jQuery, window);

