
/*frontend/mashup/ui/TickerBoardComponent/usatoday/portfolio2col/content/tmpl/Upsell.tmpl.js*/

(nv.templates['nv.widget.tickerboard.usatoday.portfolio2col.Upsell']=function(jQuery,$item){var $=jQuery,call,_=[],$data=$item.data;with($data){_.push('  <div class="nv-upsell-test" > <div class="nv-header"> <div class="main-tag-line"> Are your mutual funds failing you? </div> <div class="second-tag-line"> Find out in less than 60 seconds. </div> </div> <div class="nv-message"> <div class="nv-headder">USA TODAY Money</div> <div class="nv-subheadder">Portfolio Tracker</div> <ul> <li>&bull; All your accounts in one place</li> <li>&bull; Real-time quotes and news</li> <li>&bull; Insightful charts & graphs</li> <li>&bull; Personalized investment advice</li> </ul> <a target="_blank" class="button-signup" href="https://portfoliotracker.usatoday.com/account/signup"> FREE! START NOW! </a> <div class="return-user"> Returning? <a target="_blank" href="https://portfoliotracker.usatoday.com/account/login">Log In</a> </div> </div> <div class="nv-image" ></div> </div> ');}return _;}).templateName='nv.widget.tickerboard.usatoday.portfolio2col.Upsell';
/* /frontend/mashup/ui/TickerBoardComponent/usatoday/portfolio2col/content/tmpl/Upsell.tmpl.js*/

/*frontend/mashup/ui/TickerBoardComponent/usatoday/portfolio2col/content/Anonymous.js*/

nv.extendClass("nv.widget.tickerboard.usatoday.portfolio2col.view.Anonymous","nv.widget.tickerboard.View",function($this,$protected,$parent){$protected.templateData={};$this.__construct=function(tickerboard,options){options=options||{};$parent.__construct(tickerboard,options);};$this.render=function($contentDiv){$contentDiv.html(nv.$.tmpl('nv.widget.tickerboard.usatoday.portfolio2col.Upsell',$protected.templateData));};});
/* /frontend/mashup/ui/TickerBoardComponent/usatoday/portfolio2col/content/Anonymous.js*/

/*frontend/mashup/ui/TickerBoardComponent/usatoday/portfolio2col/content/tmpl/Upsell.loggedin.tmpl.js*/

(nv.templates['nv.widget.tickerboard.usatoday.portfolio2col.Upsell.loggedin']=function(jQuery,$item){var $=jQuery,call,_=[],$data=$item.data;with($data){_.push('  <div class="nv-upsell preview" > <div class="nv-header"> <div class="text"> MY PORTFOLIO </div> </div> <div class="nv-body"> <div class="video ');if(typeof(abTest)!=='undefined'){_.push($.encode(abTest));}
_.push('"></div> <div class="static"> <ul> <li>All your accounts in one place</li> <li>Real-time quotes and news</li> <li>Never before seen analytics</li> <li class="last">Actionable investment advice</li> </ul> <div class="add-account"> Sync your brokerage accounts<br/> to see how we can help you! <a target="_blank" class="button-signup" href="https://portfoliotracker.usatoday.com/account/settings/portfolios/add">GET STARTED!</a> </div> </div> </div> <div class="nv-footer"> <div id="power-by-sigfig"> <div id="mobile-text">Also available for mobile &amp; tablet devices</div> <a target="_blank" id="android-download" class="mobile-download" href="/mobile/getandroid">Google Play </a> <a target="_blank" id="apple-download" class="mobile-download" href="/mobile/getiphone">App Store</a> <a target="_blank" href="https://www.sigfig.com/"><div class="logo"></div> </a> </div> </div> </div> ');}return _;}).templateName='nv.widget.tickerboard.usatoday.portfolio2col.Upsell.loggedin';
/* /frontend/mashup/ui/TickerBoardComponent/usatoday/portfolio2col/content/tmpl/Upsell.loggedin.tmpl.js*/

/*frontend/mashup/ui/TickerBoardComponent/usatoday/portfolio2col/content/LoggedIn.js*/

nv.extendClass("nv.widget.tickerboard.usatoday.portfolio2col.view.LoggedIn","nv.widget.tickerboard.View",function($this,$protected,$parent){$protected.templateData={};$this.__construct=function(tickerboard,options){options=options||{};$parent.__construct(tickerboard,options);$protected.templateData.loggedIn=tickerboard.isLoggedIn();};$this.render=function($contentDiv){$contentDiv.html(nv.$.tmpl('nv.widget.tickerboard.usatoday.portfolio2col.Upsell.loggedin',$protected.templateData));};});
/* /frontend/mashup/ui/TickerBoardComponent/usatoday/portfolio2col/content/LoggedIn.js*/

/*frontend/mashup/ui/TickerBoardComponent/usatoday/portfolio2col/content/tmpl/LoggedInPortfolio.tmpl.js*/

(nv.templates['nv.widget.tickerboard.usatoday.portfolio2col.LoggedInPortfolio']=function(jQuery,$item){var $=jQuery,call,_=[],$data=$item.data;with($data){_.push('  <div class="nv-loggedinportfolio"> <div class="nv-header"> <div class="text"> MY PORTFOLIO <span class="change-data"></span> </div> <div class="viewbutton"> <a href="https://portfoliotracker.usatoday.com/portfolio" target="_blank"><!--[if lte IE 7]><img  src="https://dysjtncjibun3.cloudfront.net/frontend/mashup/ui/TickerBoardComponent/usatoday/portfolio2col/images/view_portfolio.png"/><![endif]--><![if gte IE 8]><img  src="data:image/png;base64,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"/><![endif]></a> </div> </div> <div class="nv-body"> <div class="chart"> <div class="legend" ><div class="user-color"></div> My Performance vs.&nbsp; &nbsp; <div class="compare-color"></div>S&P</div> <img src="/frontend/portfolio/?action=chart&function=perfcomparison&indicies=INDEX:SPX&theme=usatoday&period=1y&width=415&height=224" /> </div> <div class="data"> <div class="movers"> <span class="section-header">MOVERS</span> <div class="movers-content"> <table class="movers-table"> </table> </div> </div> <div class="advice"> <span class="section-header">ADVICE</span> <span class="section-subheader">Recommendations</span> <div class="advice-content"> <table class="advice-table"> </table> </div> </div> </div> </div> <div class="nv-footer"> <div class="chart-links"> More Charts: &nbsp; &nbsp; <a href="https://portfoliotracker.usatoday.com/portfolio#/charts/analytics-asset-allocations" target="_blank">Asset Allocation</a>&nbsp; | &nbsp; <a href="https://portfoliotracker.usatoday.com/portfolio#/charts/analytics-geographic-distribution" target="_blank">Geographic</a>&nbsp; | &nbsp; <a href="https://portfoliotracker.usatoday.com/portfolio#/charts/analytics-risk" target="_blank">Risk</a>&nbsp; | &nbsp; <a href="https://portfoliotracker.usatoday.com/portfolio#/charts/analytics-dividends" target="_blank">Dividends</a> </div> <div class="logo"> <a href="https://portfoliotracker.usatoday.com/" target="_blank"> <!--[if lte IE 7]><img  src="https://dysjtncjibun3.cloudfront.net/frontend/mashup/ui/TickerBoardComponent/usatoday/portfolio2col/images/powered_by.png"/><![endif]--><![if gte IE 8]><img  src="data:image/png;base64,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"/><![endif]> </a> </div> </div> </div> ');}return _;}).templateName='nv.widget.tickerboard.usatoday.portfolio2col.LoggedInPortfolio';
/* /frontend/mashup/ui/TickerBoardComponent/usatoday/portfolio2col/content/tmpl/LoggedInPortfolio.tmpl.js*/

/*frontend/portfolio/components/tmpl/actionability/holdings/columns/changeNet.tmpl.js*/

(nv.templates['nv.port.widgets.HoldingsGrid.Columns.changeNet']=function(jQuery,$item){var $=jQuery,call,_=[],$data=$item.data;with($data){_.push(' <span class="');{_.push($.encode(nv.port.Visual.getClassForChange(data.changeNet)));}
_.push('"> ');if(data.changeNet==0){_.push(' No Change ');}else if(true){_.push(' ');if(data.changeNet>0){_.push('+');}
{_.push(nv.util.Number.formatDollar(data.changeNet,2));}
_.push(' ');}
_.push(' </span> ');}return _;}).templateName='nv.port.widgets.HoldingsGrid.Columns.changeNet';
/* /frontend/portfolio/components/tmpl/actionability/holdings/columns/changeNet.tmpl.js*/

/*frontend/portfolio/components/tmpl/actionability/holdings/columns/changePercent.tmpl.js*/

(nv.templates['nv.port.widgets.HoldingsGrid.Columns.changePercent']=function(jQuery,$item){var $=jQuery,call,_=[],$data=$item.data;with($data){_.push(' <span class="');{_.push($.encode(nv.port.Visual.getClassForChange(data.changePercent)));}
_.push('"> ');if(data.changePercent==0){_.push(' No Change ');}else if(true){_.push(' ');if(data.changePercent>0){_.push('+');}
{_.push(nv.util.Number.formatPercent(data.changePercent,undefined));}
_.push(' ');}
_.push(' </span> ');}return _;}).templateName='nv.port.widgets.HoldingsGrid.Columns.changePercent';
/* /frontend/portfolio/components/tmpl/actionability/holdings/columns/changePercent.tmpl.js*/

/*frontend/portfolio/components/js/visual.js*/

nv.defineSingleton("nv.port.Visual",function($this){var $=nv.JQuery;var _getWidth=function(domElement,options){return options.width||$(domElement).width()||(function(){var width=$(domElement).css('width');if(width){return width.replace(/[^\d]/g,'');}
else{return"";}})();};var _getHeight=function(domElement,options){return options.height||$(domElement).height()||(function(){var height=$(domElement).css('height');if(height){return height.replace(/[^\d]/g,'');}
else{return"";}})();};$this.generateVMLPath=function(series,width,height){if(!(nv.$.isArray(series)&&series.length>1&&height>0&&height>0)){nv.error("Guard failed in nv.port.Visual.generateVMLPath");return null;}
var path=[];var len=series.length;var max=Math.max.apply(null,series);var min=Math.min.apply(null,series);var vSpan=Math.max(max-min,1);var vScale=height/vSpan;var hSpace=width/(len-1);var first=null,last=null;for(var i=0;i<len;++i){var val=series[i];val=Math.round(height-((val-min)*vScale));if(i===0){first=val;path.push('m'+0+','+val+' l');}else{last=val;path.push(Math.round(hSpace*i)+','+val+' ');}}
path.push('e');return{first:first,last:last,width:width,height:height,path:path.join('')};};$this.generateSVGPath=function(series,width,height){if(!(nv.$.isArray(series)&&series.length>0&&height>0&&height>0)){nv.error("Guard failed in nv.port.Visual.generateSVGPath");return null;}
var length=series.length;var max=Math.max.apply(null,series);var min=Math.min.apply(null,series);var span=Math.max(max-min,1);var inc=(width/height)*(span/length);var path=["M"];var x=0;for(var i=0;i<length;i++){var value=series[i];path.push(x,",",value);x+=inc;if(i!=length-1){path.push("L");}}
var scale=height/span;path=path.join('');return{"path":path,"min":min,"max":max,"scale":scale,"maxX":inc*(length-1)};};$this.Spectrum=function(domElement,data,options){var $this=this;options=options||{};if(typeof domElement=='string'){domElement=document.getElementById(domElement);}
var width=_getWidth(domElement,options);var height=_getHeight(domElement,options);$this.draw=function(){var federer=Raphael(domElement,width,height);federer.spectrum(data,options);};};$this.ChangeArrow=function(percentChange,options){if(percentChange==0)return"";var size='large';if(options!=null){if(options.size!=null)size=options.size;}
var imageKey;if(percentChange<0){imageKey='change_arrow_down_'+size;}
else{imageKey='change_arrow_up_'+size;}
var absoluteValue=Math.abs(percentChange);var opacityValue=0.3+(Math.min(absoluteValue,5))*(0.7/5);var html=nv.util.Sprite.GetSpriteImage('portfolio',imageKey,'',true,true,{'style':"filter:alpha(opacity="+(opacityValue*100).toFixed(0)+"); opacity:"+opacityValue.toFixed(1)+";","class":"changeArrow changeArrow-"+size});return html;};$this.getClassForChange=function(change){if(!change)return'';return change<0?'negative':'positive';};});
/* /frontend/portfolio/components/js/visual.js*/

/*frontend/mashup/ui/TickerBoardComponent/usatoday/portfolio2col/content/tmpl/LoggedInPortfolio.change.tmpl.js*/

(nv.templates['nv.widget.tickerboard.usatoday.portfolio2col.LoggedInPortfolio.change']=function(jQuery,$item){var $=jQuery,call,_=[],$data=$item.data;with($data){_.push('  <span class="change-net"> ');{_=_.concat($item.nest("nv.port.widgets.HoldingsGrid.Columns.changeNet",{data:{changeNet:changeNet}}));}
_.push(' </span> <span class="change-percent"> ');{_=_.concat($item.nest("nv.port.widgets.HoldingsGrid.Columns.changePercent",{data:{changePercent:changePercent}}));}
_.push(' </span> <span class="as-of">as of ');if(typeof(time)!=='undefined'){_.push($.encode(time));}
_.push('</span> ');}return _;}).templateName='nv.widget.tickerboard.usatoday.portfolio2col.LoggedInPortfolio.change';
/* /frontend/mashup/ui/TickerBoardComponent/usatoday/portfolio2col/content/tmpl/LoggedInPortfolio.change.tmpl.js*/

/*frontend/mashup/ui/TickerBoardComponent/usatoday/portfolio2col/content/tmpl/LoggedInPortfolio.movers.tmpl.js*/

(nv.templates['nv.widget.tickerboard.usatoday.portfolio2col.LoggedInPortfolio.movers']=function(jQuery,$item){var $=jQuery,call,_=[],$data=$item.data;with($data){_.push(' ');if(typeof(error)!=='undefined'&&error){_.push(' <tr> <td> ');if(typeof(error)!=='undefined'){_.push(error||'');}
_.push(' </td> </tr> ');}else if(true){_.push(' <tr> ');if(gainer.message){_.push(' <td class="message">');{_.push($.encode(gainer.message));}
_.push('</td> ');}else if(true){_.push(' <td class="data-ticker">');{_.push($.encode(gainer.ticker));}
_.push('</td> <td class="data-change"> <!--[if lte IE 7]><img  src="https://dysjtncjibun3.cloudfront.net/frontend/mashup/ui/TickerBoardComponent/usatoday/portfolio2col/images/gainer-arrow.png"/><![endif]--><![if gte IE 8]><img  src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAHCAYAAADam2dgAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MkU3RkRCM0NFNUE2MTFFMUFCQkNEQjc4M0Q3QjZEMkMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkU3RkRCM0RFNUE2MTFFMUFCQkNEQjc4M0Q3QjZEMkMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyRTdGREIzQUU1QTYxMUUxQUJCQ0RCNzgzRDdCNkQyQyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyRTdGREIzQkU1QTYxMUUxQUJCQ0RCNzgzRDdCNkQyQyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PrOUr+EAAABZSURBVHjaYmRAAnqTeA2A1HogDryU9/kCTJwRTcF+IBYA4g9A7AhTyAhVAJK4D1UAAyCFikCFHxihCkAmGDBgApBJjkx4FDBAxfcz/v//n4EQYGIgAgAEGAD7LRjC2aWM9AAAAABJRU5ErkJggg=="/><![endif]> ');{_.push(nv.util.Number.formatPercent(gainer.netPercentChangeFromLastClose,undefined));}
_.push(' </td> <td class="data-more">');{_.push($.encode(gainer.moreCount));}
_.push(' More Gainers</td> ');}
_.push(' </tr> <tr> ');if(loser.message){_.push(' <td class="message">');{_.push($.encode(loser.message));}
_.push('</td> ');}else if(true){_.push(' <td class="data-ticker">');{_.push($.encode(loser.ticker));}
_.push('</td> <td class="data-change"> <!--[if lte IE 7]><img  src="https://dysjtncjibun3.cloudfront.net/frontend/mashup/ui/TickerBoardComponent/usatoday/portfolio2col/images/loser-arrow.png"/><![endif]--><![if gte IE 8]><img  src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAHCAYAAADam2dgAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NjU2OUFCRTlFNUE2MTFFMUFCQkNEQjc4M0Q3QjZEMkMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NjU2OUFCRUFFNUE2MTFFMUFCQkNEQjc4M0Q3QjZEMkMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyRTdGREIzRUU1QTYxMUUxQUJCQ0RCNzgzRDdCNkQyQyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo2NTY5QUJFOEU1QTYxMUUxQUJCQ0RCNzgzRDdCNkQyQyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmeuOPcAAABbSURBVHjaYnwtz3CegYHBgAE3uMAEJBxBDFwKQPKMIBbQNAEgBTJRAUnBAyA2FH3I8AFkEgOIAaQCgfgDVAGYDxVHBUATDYD4PohGFmf8//8/AyHAxEAEAAgwADbuF62+D5uxAAAAAElFTkSuQmCC"/><![endif]> ');{_.push(nv.util.Number.formatPercent((-loser.netPercentChangeFromLastClose),undefined));}
_.push(' </td> <td class="data-more">');{_.push($.encode(loser.moreCount));}
_.push(' More Losers</td> ');}
_.push(' </tr> ');}}return _;}).templateName='nv.widget.tickerboard.usatoday.portfolio2col.LoggedInPortfolio.movers';
/* /frontend/mashup/ui/TickerBoardComponent/usatoday/portfolio2col/content/tmpl/LoggedInPortfolio.movers.tmpl.js*/

/*frontend/mashup/ui/TickerBoardComponent/usatoday/portfolio2col/content/tmpl/LoggedInPortfolio.advice.tmpl.js*/

(nv.templates['nv.widget.tickerboard.usatoday.portfolio2col.LoggedInPortfolio.advice']=function(jQuery,$item){var $=jQuery,call,_=[],$data=$item.data;with($data){_.push(' ');if(totalSavings==0){_.push(' <tr> <td class="message"> ');if(typeof(error)!=='undefined'&&error){_.push(' ');if(typeof(error)!=='undefined'){_.push(error||'');}
_.push(' ');}else if(true){_.push(' After running over 100 tests on your portfolio, we were unable to find any issues (which is a good thing). Always vigilant, we’ll alert you the moment we find a savings or earnings opportunity for you. ');}
_.push(' </td> </tr> ');}else if(true){_.push(' ');$.each(typeof(groups)!=='undefined'&&groups||[],function(index,group){with((this==window?{}:this)){_.push(' <tr> <td class="data-key">');{_.push($.encode(group.label));}
_.push('</td> <td class="data-value">');{_.push($.encode(group.count));}
_.push('</td> </tr> ');}});_.push(' <tr> <td class="data-key total">Total Savings</td> <td class="data-value total">');{_.push(nv.util.Number.formatDollar(Math.round(totalSavings),undefined));}
_.push('</td> </tr> ');}}return _;}).templateName='nv.widget.tickerboard.usatoday.portfolio2col.LoggedInPortfolio.advice';
/* /frontend/mashup/ui/TickerBoardComponent/usatoday/portfolio2col/content/tmpl/LoggedInPortfolio.advice.tmpl.js*/

/*common/javascript/timedBatchProcessor.js*/

if(nv.CreateNamespace("nv.TimedBatchProcessor")){nv.TimedBatchProcessor=function(delay,maxDelay){var $this=this;if(typeof maxDelay=="undefined"){maxDelay=0;}
var delayTimer=null;var maxDelayTimer=null;var queuedJobs=[];$this.OnNewBatchCreated=new nv.Event();$this.AddJob=function(args){queuedJobs.push(args);if(delayTimer!==null){clearTimeout(delayTimer);}
delayTimer=setTimeout(delayTimerEvent,delay);if(maxDelay>0&&maxDelayTimer===null){maxDelayTimer=setTimeout(maxDelayTimerEvent,maxDelay);}};var delayTimerEvent=function(){delayTimer=null;if(maxDelayTimer!==null){clearTimeout(maxDelayTimer);maxDelayTimer=null;}
processJobs();};var maxDelayTimerEvent=function(){maxDelayTimer=null;if(delayTimer!==null){clearTimeout(delayTimer);delayTimer=null;}
processJobs();};var processJobs=function(){var jobs=queuedJobs;queuedJobs=[];$this.OnNewBatchCreated.Trigger(jobs);};};}
/* /common/javascript/timedBatchProcessor.js*/

/*common/javascript/test.js*/

nv.defineSingleton("nv.test",function(){"use strict";var $this=this;$this.isTesting=function(what){if(typeof what=='string'){if(typeof casesToHash[what]!=='string')return false;return isTestingStringHash(casesToHash[what]);}
var result=false;nv.array.iterate(what,function(key,value){if(isTestingStringHash(casesToHash[value])){result=true;return nv.array.BREAK;}});return result;};var getRegExpForHash=function(hash){return new RegExp("\\b"+hash.replace('-','\\-')+"\\b");};var isTestingStringHash=function(hash){return getRegExpForHash(hash).test(window.location.hash);};$this.cases={AGREE_TO_TOS:{_:'agreeToTos',WSOD:'agreeToTosWsod'},SHOW_TOUR:'showTour',FORCE_EMAIL_IS_CONFIRMED:'forceEmailIsConfirmed',DEPRECATED:'deprecated',KEEP_AFTER_COLUMN_DRAG:'keepAfterColumnDrag',FAKE_STREAMING_QUOTES:'fakeStreamingQuotes',EMAIL_CONFIRM_OVERLAY:'emailConfirmOverlay',EMAIL_CONFIRM_OVERLAY_ERROR:'emailConfirmOverlayError',LOADING_STAGE1:'loadingStage1',LOADING_STAGE2:'loadingStage2',SOURCE_SYNC:{FAIL:'sourceSyncFail',PENDING:'sourceSyncPending',SUCCESS:'sourceSyncSuccess'},REGFLOW_SYNC:{SUCCESS:'regflowSyncSuccess',FAIL:'regflowSyncFail'}};var casesToHash={};casesToHash[$this.cases.AGREE_TO_TOS._]='force-agree-to-tos-overlay';casesToHash[$this.cases.AGREE_TO_TOS.WSOD]='force-agree-to-tos-overlay-wsod';casesToHash[$this.cases.SHOW_TOUR]='showtour';casesToHash[$this.cases.DEPRECATED]='break-on-deprecated';casesToHash[$this.cases.KEEP_AFTER_COLUMN_DRAG]='keep-after-column-drag';casesToHash[$this.cases.FAKE_STREAMING_QUOTES]='fakequotes';casesToHash[$this.cases.EMAIL_CONFIRM_OVERLAY]='force-email-confirm-overlay';casesToHash[$this.cases.EMAIL_CONFIRM_OVERLAY_ERROR]='force-email-confirm-overlay-error';casesToHash[$this.cases.FORCE_EMAIL_IS_CONFIRMED]='force-email-is-confirmed';casesToHash[$this.cases.LOADING_STAGE1]='loading-stage1';casesToHash[$this.cases.LOADING_STAGE2]='loading-stage2';casesToHash[$this.cases.SOURCE_SYNC.FAIL]='source-sync-fail';casesToHash[$this.cases.SOURCE_SYNC.PENDING]='source-sync-pending';casesToHash[$this.cases.SOURCE_SYNC.SUCCESS]='source-sync-success';casesToHash[$this.cases.REGFLOW_SYNC.SUCCESS]='regflow-sync-success';casesToHash[$this.cases.REGFLOW_SYNC.FAIL]='regflow-sync-fail';});
/* /common/javascript/test.js*/

/*common/javascript/streaming/wildfire/transport.js*/

nv.defineEnum("nv.streaming.wildfire.transport.states",["UNINITIALIZED","LOADING","PARTIAL","COMPLETE"]);nv.defineAwesomeClass("nv.streaming.wildfire.Transport",function($this,$protected){var s_=nv.importNamespace("nv.streaming.wildfire.transport.states");var state;var baseUrl;var failTimer;var disableCallbacks;$protected.partialResponseText;$protected.status;var streamingResponseTextLastLength;var incompleteChunk="";var partialChunkObj=null;var aborted=false;var doesNetworkSupportStreaming=null;var lastReceivedPacketTime=null;var completedRequests=0;var hasStreamTestBeenRequested=false;$this.onMessageReceived=new nv.Event();$this.onRequestCompleted=new nv.Event();$this.__construct=function(_baseUrl){state=s_.UNINITIALIZED;baseUrl=_baseUrl;$protected.partialResponseText="";$protected.status=0;streamingResponseTextLastReadIndex=0;};$protected.supportsStreaming=function(){return false;};$protected.getStreamingPreludeSize=function(){return 0;};$this.getName=function(){throw"Not Implemented";};$this.start=function(params){if(state!=s_.UNINITIALIZED){$this.reset();}
state=s_.LOADING;resetFailTimeout();};$this.abort=function(){aborted=true;$protected.status=0;};$this.reset=function(){$protected.partialResponseText="";streamingResponseTextLastReadIndex=0;partialChunkObj=null;incompleteChunk="";$protected.status=0;state=s_.UNINITIALIZED;aborted=false;lastReceivedPacketTime=null;hasStreamTestBeenRequested=false;};$protected.completed=function(){completedRequests++;if(failTimer!=null){clearTimeout(failTimer);failTimer=null;updateState(s_.COMPLETE);}
else{nv.log("Transport timer was triggered before response could be processed","wildfire");}};$protected.progressed=function(){if(failTimer==null){nv.log("Transport timer was triggered before progress could be processed","wildfire");return;}
resetFailTimeout();if($protected.status!=200){$this.abort();return;}
if(typeof $protected.partialResponseText=='string'){var newResponse=$protected.partialResponseText.substring(streamingResponseTextLastReadIndex);streamingResponseTextLastReadIndex=$protected.partialResponseText.length;var delimIndex;while((delimIndex=newResponse.indexOf("\n"))>-1){var partialChunk=incompleteChunk+newResponse.substring(0,delimIndex);newResponse=newResponse.substring(delimIndex+1);incompleteChunk="";if(!nv.String.Trim(partialChunk)){break;}
try{partialChunkObj=eval("("+partialChunk+")");if(partialChunkObj.prelude){nv.log("Got prelude of size "+partialChunkObj.prelude.length,"wildfire");}
else{nv.log("Got chunk: "+partialChunk,"wildfire");}
if(hasStreamTestBeenRequested&&$protected.supportsStreaming()&&doesNetworkSupportStreaming===null&&lastReceivedPacketTime===null){lastReceivedPacketTime=new Date().getTime();nv.log("Waiting for test packet to check if the network can stream","wildfire");}
else if(partialChunkObj.streamtestpacket){if(new Date().getTime()-lastReceivedPacketTime>250){doesNetworkSupportStreaming=true;nv.log("Network is able to stream","wildfire");}
else{doesNetworkSupportStreaming=false;nv.log("Network unable to stream. Switching to long-polling","wildfire");}}}
catch(e){nv.error("Error "+e+" while processing chunk: "+partialChunk);partialChunkObj=null;}
if(partialChunkObj){updateState(s_.PARTIAL);if(aborted){return;}}}
incompleteChunk+=nv.String.Trim(newResponse);}
else if(typeof $protected.partialResponseText=='object'){partialChunkObj=$protected.partialResponseText;updateState(s_.PARTIAL);}
else{nv.error("Invalid type given for partialResponseText: "+typeof $protected.partialResponseText+". Expecting string or object");}};$protected.getRequestUrl=function(paramsToAppend){if(paramsToAppend){return nv.util.Url.addToQueryString(baseUrl,$protected.getRequestData(paramsToAppend));}
else{return baseUrl;}};$protected.getRequestData=function(params){if(completedRequests>=1&&$protected.supportsStreaming()){if(doesNetworkSupportStreaming===true){params.stream=1;}
else if(doesNetworkSupportStreaming===null){params.streamtest=1;hasStreamTestBeenRequested=true;}
if(doesNetworkSupportStreaming!==false){var preludeSize=$protected.getStreamingPreludeSize();if(preludeSize>0){params.prelude=$protected.getStreamingPreludeSize();}}}
params.cb=Math.floor(Math.random()*100000)+""+new Date().getTime();return nv.util.Url.getQueryString(params);};var updateState=function(newState){var oldState=state;state=newState;if(newState==s_.PARTIAL){$this.onMessageReceived.Trigger({message:partialChunkObj});}
else if(newState==s_.COMPLETE){$this.onRequestCompleted.Trigger({status:$protected.status});}};var timerErrorHandler=function(){nv.log("Transport timer was triggered","wildfire");failTimer=null;$this.abort();$protected.status=500;updateState(s_.COMPLETE);};var resetFailTimeout=function(){if(failTimer!=null){clearTimeout(failTimer);}
failTimer=setTimeout(timerErrorHandler,65000);};});
/* /common/javascript/streaming/wildfire/transport.js*/

/*common/javascript/streaming/wildfire/xhr.js*/

nv.extendClass("nv.streaming.wildfire.XHRTransport","nv.streaming.wildfire.Transport",function($this,$protected,$parent){var xhr;$this.__construct=function(baseUrl){$parent.__construct(baseUrl);xhr=new XMLHttpRequest();};$protected.supportsStreaming=function(){return true;};$protected.getStreamingPreludeSize=function(){if(window.controllers&&Object.prototype.toString.call(window.controllers)=="[object XULControllers]"){return 0;}
else{return 1024;}};$this.getName=function(){return"XHRTransport";};$this.start=function(params){$parent.start(params);xhr.open("POST",$protected.getRequestUrl(),true);xhr.onreadystatechange=onreadystatechange;xhr.setRequestHeader("Content-Type","text/plain");xhr.send($protected.getRequestData(params));};$this.abort=function(){$parent.abort();if(xhr.readyState!=4){xhr.abort();}};var onreadystatechange=function(){if(xhr.readyState>=3&&xhr.status==200){$protected.partialResponseText=xhr.responseText;$protected.status=xhr.status;$protected.progressed();}
if(xhr.readyState==4){$protected.status=xhr.status;$protected.completed();}};$protected.timeoutCleanup=function(){$parent.$protected.timeoutCleanup();if(xhr.readyState>=1){xhr.abort();}};},function($static){$static.isSupported=function(){return typeof XMLHttpRequest!="undefined"&&("withCredentials"in(new XMLHttpRequest()));};});
/* /common/javascript/streaming/wildfire/xhr.js*/

/*common/javascript/streaming/wildfire/xdr.js*/

nv.extendClass("nv.streaming.wildfire.XDRTransport","nv.streaming.wildfire.Transport",function($this,$protected,$parent){var xdr=null;$this.__construct=function(baseUrl){$parent.__construct(baseUrl);};$this.getName=function(){return"XDRTransport";};$protected.supportsStreaming=function(){return true;};$protected.getStreamingPreludeSize=function(){return 2048;};$this.start=function(params){xdr=new XDomainRequest();$parent.start(params);xdr.open("POST",$protected.getRequestUrl());xdr.onload=onload;xdr.onerror=onerror;xdr.onprogress=progress;xdr.send($protected.getRequestData(params));};$this.abort=function(){$parent.abort();xdr.abort();onerror();};var progress=function(){$protected.partialResponseText=xdr.responseText;$protected.status=200;$protected.progressed();};var onload=function(){$protected.partialResponseText=xdr.responseText;$protected.status=200;$protected.progressed();$protected.completed();};var onerror=function(){$protected.responseText="";$protected.status=500;$protected.completed();};},function($static){$static.isSupported=function(){return(typeof XDomainRequest!=="undefined"&&document.documentMode>7);};});
/* /common/javascript/streaming/wildfire/xdr.js*/

/*common/javascript/streaming/wildfire/jsonp.js*/

nv.extendClass("nv.streaming.wildfire.JsonPTransport","nv.streaming.wildfire.Transport",function($this,$protected,$parent){var $static=nv.streaming.wildfire.JsonPTransport;var ifr=null;var barIfr=null;var nodes=[];var failTimer;var callbackId;var errbackId;var cbInstanceId=0;var callbacksActive=false;var loadInIfr=(window.opera&&Object.prototype.toString.call(window.opera)=="[object Opera]")||(window.controllers&&Object.prototype.toString.call(window.controllers)=="[object XULControllers]")||false;$this.__construct=function(baseUrl){$parent.__construct(baseUrl);callbackId=$static.wrapCallbackAsGlobal(onload);errbackId=$static.wrapCallbackAsGlobal(onerror);if(loadInIfr){ifr=createIframe();nv.util.Dom.safeAddNodeToHead(ifr);killLoadingBar();}};$this.getName=function(){return"JsonPTransport";};$this.start=function(params){$parent.start(params);cbInstanceId++;callbacksActive=true;$static.updateArgForCallback(callbackId,cbInstanceId);$static.updateArgForCallback(errbackId,cbInstanceId);var doc=ifr?(ifr.contentDocument||ifr.contentWindow.document||ifr.document):document;var head=doc.getElementsByTagName('head')[0]||doc.getElementsByTagName('body')[0];params.jsonp=getFullCallbackPath(callbackId);var url=$protected.getRequestUrl(params);if(ifr){doc.open();doc.write("<scr"+"ipt src='"+url+"'></scr"+"ipt>"+"<scr"+"ipt>"+getFullCallbackPath(errbackId)+"()</scr"+"ipt>");doc.close();killLoadingBar();nv.array.iterate(doc.getElementsByTagName("SCRIPT"),function(node){nodes.push(node);});}
else{nodes.push(nv.util.Dom.addJSToHead(url));}};$this.abort=function(){$parent.abort();clearNodes();callbacksActive=false;$protected.partialResponseText="";$protected.status=0;$protected.completed();};var onload=function(_cbInstanceId,response){if(!callbacksActive||cbInstanceId!=_cbInstanceId){return;}
callbacksActive=false;setTimeout(function(){clearNodes();$protected.partialResponseText=response;$protected.status=200;$protected.progressed();$protected.completed();},50);};var onerror=function(_cbInstanceId){if(!callbacksActive||cbInstanceId!=_cbInstanceId){return;}
setTimeout(function(){callbacksActive=false;clearNodes();$protected.partialResponseText="";$protected.status=500;$protected.completed();},50);};var getFullCallbackPath=function(callbackId){var fp=$static.getFullCallbackPath(callbackId);if(ifr){fp="parent."+fp;}
return fp;};var createIframe=function(){var i=document.createElement("iframe");i.style.display='block';i.style.width='0';i.style.height='0';i.style.border='0';i.style.margin='0';i.style.padding='0';i.style.overflow='hidden';i.style.visibility='hidden';i.cbId=0;return i;};var killLoadingBar=function(){var firstAdd=true;setTimeout(function(){if(barIfr===null){barIfr=createIframe();}
document.body.appendChild(barIfr);document.body.removeChild(barIfr);if(firstAdd){firstAdd=false;setTimeout(arguments.callee,50);}},0);};var removeNode=function(node){if(node.clearAttributes){node.clearAttributes();}
while(node.lastChild){removeNode(node.lastChild);}
if(node.parentNode){node.parentNode.removeChild(node);}};var clearNodes=function(){for(var i in nodes){if(nodes.hasOwnProperty(i)){removeNode(nodes[i]);}}
nodes=[];};},function($static){nv.jswf=$static;var callbacks=[];var emptyFunc=function(){};$static.cb=function(callbackId){if(typeof callbacks[callbackId]!="undefined"){var cbinstance=callbacks[callbackId];return function(jsonpresponse){cbinstance[1].call(null,cbinstance[0],jsonpresponse);};}
else{return emptyFunc;}};$static.isSupported=function(){return true;};var nextCallbackId=0;$static.wrapCallbackAsGlobal=function(callback,arg){var callbackId=nextCallbackId++;callbacks[callbackId]=[arg,callback];return callbackId;};$static.getFullCallbackPath=function(callbackId){return"nv.jswf.cb("+callbackId+")";};$static.removeCallback=function(callbackId){if(typeof callbacks[callbackId]!="undefined"){delete callbacks[callbackId];}};$static.updateArgForCallback=function(callbackId,arg){if(typeof callbacks[callbackId]!="undefined"){callbacks[callbackId][0]=arg;}};});
/* /common/javascript/streaming/wildfire/jsonp.js*/

/*common/javascript/streaming/wildfire/wildfire.js*/

nv.defineEnum("nv.streaming.wildfire.states",["SID_WAIT","CONNECTED","ABORTING"]);nv.defineAwesomeClass("nv.streaming.Wildfire",function($this){var s_=nv.importNamespace("nv.streaming.wildfire.states");var state;var oldsid=null;var sid=null;var lastMid=-1;var topicsToSub=[];var topicsToUnsub=[];var topicsSubRequested=[];var topicsUnsubRequested=[];var allSubscribedTopics=[];var transport;$this.onMessage=new nv.Event();var exponentialBackoffTimeout=Math.floor((2+Math.random()*4)*1000);var timeoutCount=0;var domain=nv.streaming.Wildfire.topicDomain;$this.__construct=function(){transport=nv.streaming.Wildfire.getTransport();transport.onMessageReceived.Bind(messageReceivedHandler);transport.onRequestCompleted.Bind(requestCompleteHandler);state=s_.SID_WAIT;transport.start({});};$this.subscribe=function(topics){nv.array.iterate(topics,function(topic){topic=domain+"."+topic;if(typeof allSubscribedTopics[topic]=="undefined"){allSubscribedTopics[topic]=1;topicsToSub.push(topic);}});resendRequest();};$this.unsubscribe=function(topics){nv.array.iterate(topics,function(topic){topic=domain+"."+topic;if(typeof allSubscribedTopics[topic]!="undefined"){delete allSubscribedTopics[topic];topicsToUnsub.push(topic);}});resendRequest();};var resendRequest=function(){if(state==s_.CONNECTED){state=s_.ABORTING;transport.abort();}};var messageReceivedHandler=function(e){timeoutCount=0;exponentialBackoffTimeout=Math.floor((2+Math.random()*4)*1000);var msg=e.message;if(msg.sid===null){oldsid=sid;sid=null;state=s_.SID_WAIT;transport.abort();return;}
switch(state){case s_.SID_WAIT:if(msg.sid){sid=msg.sid;state=s_.CONNECTED;nv.log("Connected with sid: "+sid,"wildfire");if(!nv.array.isEmpty(topicsToSub)||!nv.array.isEmpty(topicsToUnsub)){setTimeout(function(){if(!nv.array.isEmpty(topicsToSub)||!nv.array.isEmpty(topicsToUnsub)){resendRequest();}},500);}}
else if(msg.streamtestpacket||msg.prelude||msg.noop){}
else{nv.error("Was in SID_WAIT state, but a successful request didn't return SID","wildfire");}
break;case s_.CONNECTED:processResponse(msg);break;default:nv.error("Invalid state "+state+" in messageReceivedHandler PARTIAL switch","wildfire");break;}};var requestCompleteHandler=function(e){if(e.status==200){timeoutCount=0;exponentialBackoffTimeout=Math.floor((2+Math.random()*4)*1000);switch(state){case s_.SID_WAIT:if(oldsid){nv.log("Server has lost our session with sid: "+oldsid+". Starting a new one","wildfire");setTimeout(restartSession,0);}
else{nv.error("Was in SID_WAIT state, but a successful request didn't return SID","wildfire");}
break;case s_.CONNECTED:nv.log("Restarting request","wildfire");setTimeout(continueSession,0);break;case s_.ABORTING:nv.log("Request was aborted. Restarting in 50ms","wildfire");setTimeout(continueSession,50);break;default:nv.error("Invalid state "+state+" in requestCompleteHandler[success]","wildfire");break;}}
else{switch(state){case s_.SID_WAIT:var timeout=getExponentialBackoffTimeout();if(!oldsid){nv.log("Unable to connect. Retrying in "+timeout+"ms","wildfire");}
else{nv.log("Server has lost our session with sid: "+oldsid+". Starting a new one","wildfire");}
setTimeout(restartSession,timeout);break;case s_.CONNECTED:var timeout=getExponentialBackoffTimeout();nv.log("Connection dropped. Retrying in "+timeout+"ms","wildfire");setTimeout(continueSession,timeout);break;case s_.ABORTING:nv.log("Request was aborted. Restarting in 50ms","wildfire");setTimeout(continueSession,50);break;default:nv.error("Invalid state "+state+" in requestCompleteHandler[failure]","wildfire");break;}}
transport.reset();};var restartSession=function(){sid=null;topicsToSub=nv.array.keys(allSubscribedTopics);topicsToUnsub=[];topicsSubRequested=[];topicsUnsubRequested=[];state=s_.SID_WAIT;var params={};addTopicsToParams(params);transport.start(params);};var continueSession=function(){var params={sid:sid};if(lastMid!=-1){params.ack=lastMid;}
addTopicsToParams(params);state=s_.CONNECTED;transport.start(params);};var addTopicsToParams=function(params){if(!nv.array.isEmpty(topicsToSub)){nv.array.iterate(topicsToSub,function(topic){nv.log("Subscribing to "+topic,"wildfire");topicsSubRequested.push(topic);});topicsToSub=[];}
if(!nv.array.isEmpty(topicsToUnsub)){nv.array.iterate(topicsToUnsub,function(topic){nv.log("Unsubscribing to "+topic,"wildfire");topicsUnsubRequested.push(topic);});topicsToUnsub=[];}
if(!nv.array.isEmpty(topicsSubRequested)){params.sub=topicsSubRequested.join(",");}
if(!nv.array.isEmpty(topicsUnsubRequested)){params.unsub=topicsUnsubRequested.join(",");}};var processResponse=function(response){if(!nv.array.isEmpty(topicsSubRequested)){topicsSubRequested=[];}
if(!nv.array.isEmpty(topicsUnsubRequested)){topicsUnsubRequested=[];}
if(response.data&&!nv.array.isEmpty(response.data)){nv.array.iterate(response.data,function(msg){if(nv.array.count(msg)===3){lastMid=msg[0];var channel=msg[1].replace(new RegExp("^"+domain+"\\."),"");$this.onMessage.Trigger({channel:channel,message:msg[2]});}
else{nv.log("Invalid message received, dropping packet","wildfire");nv.log(msg);}});}
else{lastMid=-1;}};var getExponentialBackoffTimeout=function(){if(timeoutCount>0){if(exponentialBackoffTimeout<60000){exponentialBackoffTimeout*=2;}}
timeoutCount++;return exponentialBackoffTimeout;};},function($static){var transports=[nv.streaming.wildfire.XHRTransport,nv.streaming.wildfire.XDRTransport,nv.streaming.wildfire.JsonPTransport];var streamServers="stream.sigfig.com".split(",");var domain="prod";if(nv.test.isTesting(nv.test.cases.FAKE_STREAMING_QUOTES)){domain="fake";}
var streamServer=streamServers[Math.floor(Math.random()*nv.array.count(streamServers))];var baseUrl=document.location.protocol+"//"+streamServer+"/lp";nv.log("Wildfire server is "+streamServer,"wildfire");nv.log("Wildfire domain is "+domain,"wildfire");$static.topicDomain=domain;$static.getTransport=function(){var selectedTransport=null;nv.array.iterate(transports,function(transport){if(transport.isSupported()){selectedTransport=transport;return nv.array.BREAK;}});if(selectedTransport==null){nv.error("No suitable comet transport found");return null;}
else{transport=new selectedTransport(baseUrl);nv.log("Selected transport "+transport.getName(),"wildfire");return transport;}};var instance=null;$static.instance=function(){if(instance===null){instance=new $static();}
return instance;};});
/* /common/javascript/streaming/wildfire/wildfire.js*/

/*common/javascript/streaming/preloader.js*/

(function(){nv.streaming.Wildfire.instance();})();
/* /common/javascript/streaming/preloader.js*/

/*common/javascript/streaming/streaming.js*/

if(nv.CreateNamespace("nv.StreamingServices")){nv.StreamingServices=new function(){var $this=this;var hasSubscribedToStreamingStats=false;$this.REALTIME_STATS_ASSET_VALUE_UPDATE="REALTIMESTATS.ASSET.UPDATE";$this.OnStreamingQuote=new nv.Event();$this.OnStreamingNews=new nv.Event();$this.OnStreamingStat=new nv.Event();var wildfire;$this.SubscribeToTickers=function(tickers,quotes,news){init();if(typeof quotes=='undefined'){quotes=true;}
if(typeof news=='undefined'){news=true;}
var addSubs=[];nv.array.iterate(tickers,function(ticker){if(nv.Security.isValidPrefixedTicker(ticker)){var security=new nv.Security(ticker);if(quotes&&security.exchange!=="NYSE"&&security.exchange!=="NASDAQ"&&security.exchange!=="AMEX"){addSubs.push(getQuoteQueueForSecurity(security));}
if(news&&security.exchange!=="US"){addSubs.push(getNewsQueueForSecurity(security));}}});if(!nv.array.isEmpty(addSubs)){wildfire.subscribe(addSubs);}};$this.SubscribeToStreamingStats=function(){if(!hasSubscribedToStreamingStats){init();wildfire.subscribe($this.REALTIME_STATS_ASSET_VALUE_UPDATE);hasSubscribedToStreamingStats=true;}};var getNewsQueueForSecurity=function(security){return"NEWS."+security.exchange+"."+security.ticker;};var getQuoteQueueForSecurity=function(security){return"QUOTE."+security.exchange+"."+security.ticker;};var initDone=false;var init=function(){if(initDone){return;}
else{initDone=true;wildfire=nv.streaming.Wildfire.instance();var bindTime=new Date().getTime();var shouldArtificiallyDelay=false;wildfire.onMessage.Bind(function(e){var channel=e.channel;var message=e.message;var match=channel.match(/^(QUOTE|NEWS)\.(.*?)\.(.*)$/);if(match!==null){var security=new nv.Security(match[2]+":"+match[3]);if(match[1]=="QUOTE"){var quote=eval("("+message+")");var timeout=Math.floor(Math.random()*10000);if(!shouldArtificiallyDelay){if(new Date().getTime()-bindTime>10000){shouldArtificiallyDelay=true;}
else{timeout=0;}}
setTimeout(function(){$this.OnStreamingQuote.Trigger({security:security,quote:quote});},timeout);}
else if(match[1]=="NEWS"){var news=eval("("+message+")");$this.OnStreamingNews.Trigger({security:security,news:news});}}
else if(channel.match(/^REALTIMESTATS/)){var message=eval("("+message+")");$this.OnStreamingStat.Trigger({queue:channel,message:message});}});}};};}
/* /common/javascript/streaming/streaming.js*/
