if(typeof SbWeb=="undefined"||SbWeb==null)SbWeb={};if(typeof SbWeb.UI=="undefined"||SbWeb.UI==null)SbWeb.UI={};var $mq=SbWeb.UI.MiniQuote=new function(){var config={contentId:"",inputId:"",selectionId:"",buttonId:"",rtqLinkId:"",indexChartVisible:0,quoteChartVisible:0,startMinimized:0,indexQuery:["$INDU","$COMPQ","$SPX"],indexNames:["Dow Jones","NASDAQ","S &amp; P 500"],indexData:new Array(),selectedIndex:0,currentSymbol:"",cobrand:"Sharebuilder"};this.Initialize=function(mqSettings){config.contentId=mqSettings.contentId;config.inputId=mqSettings.inputId;config.selectionId=mqSettings.selectionId;config.buttonId=mqSettings.buttonId;config.rtqLinkId=mqSettings.rtqLinkId;config.indexChartVisible=config.quoteChartVisible=mqSettings.showChart;config.startMinimized=mqSettings.startMinimized;config.cobrand=mqSettings.cobrand;$("#"+config.selectionId).val(($.cookie("mqSelectedOption")==null)?0:$.cookie("mqSelectedOption"));$("#"+config.buttonId).bind("click",function(e){$mq.StopEvent(e);var symbol=$qu.CleanInput($("#"+config.inputId).val());if(symbol!=""){if($("#"+config.selectionId).val()==0)$mq.GetQuoteData(symbol);else $mq.Redirect($("#"+config.selectionId).val(),symbol)}});$("#"+config.inputId).bind("keypress",function(e){if(e.keyCode==13){$mq.StopEvent(e)}});$("#"+config.inputId).bind("keydown",function(e){if(e.keyCode==13){$mq.StopEvent(e)}});$("#"+config.inputId).bind("keyup",function(e){if(e.keyCode==13){$mq.StopEvent(e);$("#"+config.buttonId).triggerHandler("click")}});$("#"+config.selectionId).bind("change",function(e){$.cookie("mqSelectedOption",$("#"+config.selectionId).val(),{path:'/'})});if(mqSettings.startingIndexJson&&mqSettings.startingIndexJson.results&&mqSettings.startingIndexJson.results.length>2){config.indexData=$qu.ProcessQuoteData(mqSettings.startingIndexJson);this.RenderIndex()}else if(config.startMinimized!=1)this.GetIndexData()};this.StopEvent=function(e){if(e.returnValue){e.returnValue=false;e.cancelBubble=true}if(e.preventDefault){e.preventDefault();e.stopPropagation()}};this.Redirect=function(selectedOption,symbol){if(selectedOption!='6')window.location.href=SbWeb.Research.QuoteLinks[selectedOption]+'?Symbol='+symbol;else window.location.href=SbWeb.Research.QuoteLinks[selectedOption]+'?Query='+symbol};this.ShowLoadingImage=function(){setTimeout("$(\"div#mqContent img.loading\").show();",1500)};this.SetLoadingIndex=function(){$("#mqError").hide();var output="";output+="<div class=\"IndexLoading\">";output+="<img src=\"//content.sharebuilder.com/sharebuilder/common/img/loading.gif\" class=\"loading\" alt=\"Loading...\" style=\"display:none;\"/>";output+="</div>";output+="<div id=\"updated\">&nbsp;</div>";this.SetContent(output);this.ShowLoadingImage()};this.SetLoadingQuote=function(){$("#mqError").hide();var output="";output+="<div class=\"QuickQuote\">";output+="<div class=\"Quote\">";output+="<img src=\"//content.sharebuilder.com/sharebuilder/common/img/loading.gif\" class=\"loading\" alt=\"Loading...\" style=\"display:none;\"/>";output+="</div>";output+="</div>";output+="<div id=\"updated\">&nbsp;</div>";this.SetContent(output);this.ShowLoadingImage()};this.SetContent=function(content){$("#"+config.contentId).html(content)};this.ShowError=function(content){this.SetContent("<div id=\"updated\">&nbsp;</div>");$("#mqError").show();$("#mqError .mqErrorContent").html(content)};this.GetIndexData=function(){this.SetLoadingIndex();$qu.GetQuoteData(config.indexQuery,$qu.QuoteReturnType.IndexQuote,this.ProcessIndexData,this.IndexError)};this.ProcessIndexData=function(quotes){config.indexData=quotes;$mq.RenderIndex()};this.IndexError=function(event,error,settings){$mq.ShowError("Information temporarily unavailable.")};this.GetQuoteData=function(symbol){this.SetLoadingQuote();config.currentSymbol=symbol;$qu.GetQuoteData(symbol,$qu.QuoteReturnType.QuickQuote,this.ProcessQuoteData,this.QuoteError)};this.ProcessQuoteData=function(quotes){$mq.RenderQuickQuote(quotes)};this.QuoteError=function(event,error,settings){$mq.ShowError("Information temporarily unavailable.")};this.SetIndexChartDisplay=function(index){if((config.selectedIndex!=index&&config.indexChartVisible==1)||config.indexChartVisible==0){$mq.SetIndexSelection(index);config.indexChartVisible=1;$("#mqContent a.Index").removeClass("selected");$("#mqContent #i"+index+" a.Index").addClass("selected");$("#mqContent #chartLink a").hide();if($.browser.msie&&$.browser.version==6){$("#mqContent .chart").hide();$("#mqContent #c"+index).show()}else{$("#mqContent .chart").slideUp("slow");$("#mqContent #c"+index).slideDown("slow")}}else{config.indexChartVisible=0;$("#mqContent #chartLink a").show();if($.browser.msie&&$.browser.version==6){$("#mqContent .chart").hide()}else{$("#mqContent .chart").slideUp("slow")}$("#mqContent a.Index").removeClass("selected")}};this.RenderIndex=function(){var output="";output+="<div class=\"Indexes\">";output+=this.RenderIndexItem(0);output+=this.RenderIndexItem(1);output+=this.RenderIndexItem(2);output+="<div id=\"chartLink\"><a href=\"#\">Show chart</a></div>";output+="<div id=\"updated\">";output+="As of "+config.indexData[0].QuoteDate;if(config.indexData[0].QuoteStatus==$qu.QuoteStatus.RealTimeQuote)output+="<img src=\"//content.sharebuilder.com/sharebuilder/common/img/icons/realtimequote.png\" alt=\"Real-time\"/>";output+="</div>";output+="</div>";this.SetContent(output);$("#mqContent #chartLink a").bind("click",function(e){$mq.SetIndexChartDisplay(config.selectedIndex);$mq.StopEvent(e)});$("#i0 a").bind("click",function(e){$mq.SetIndexChartDisplay(0);$mq.StopEvent(e)});$("#i1 a").bind("click",function(e){$mq.SetIndexChartDisplay(1);$mq.StopEvent(e)});$("#i2 a").bind("click",function(e){$mq.SetIndexChartDisplay(2);$mq.StopEvent(e)});if(config.indexChartVisible==1)$("#i"+config.selectedIndex+" a").trigger("click")};this.RenderIndexItem=function(index){var quote=config.indexData[index];var displayName=config.indexNames[index];if(quote==null)return;var output="";output+="<div id=\"i"+index+"\">";output+="<a href=\"#\" class=\"Index\">";output+="<span class=\"n\">"+displayName+"</span>";output+="<span class=\"q\">"+quote.LastPrice+"</span>";output+="<span class=\"c\">"+quote.FormattedChange()+"</span>";output+="</a>";output+="<div class=\"chart\" id=\"c"+index+"\" style=\"display:none;\">";output+="<img class=\"mwchartbackmed\" src=\""+quote.ChartUrl+"\" width=\"194\" height=\"90\" alt=\"Chart for "+quote.Symbol+"\"/><a href=\"#\">Hide chart</a>";output+="</div>";output+="</div>";return output};this.SetIndexSelection=function(index){config.selectedIndex=index};this.SetQuoteChartDisplay=function(){if(config.quoteChartVisible==1){if($.browser.msie&&$.browser.version==6)$(".QuickQuote .chart").show();else $(".QuickQuote .chart").slideDown("slow");$(".links a.chartLink").html("Hide chart")}else{if($.browser.msie&&$.browser.version==6)$(".QuickQuote .chart").hide();else $(".QuickQuote .chart").slideUp("slow");$(".links a.chartLink").html("Show chart")}};this.ToggleQuoteChartDisplay=function(){if(config.quoteChartVisible==0)config.quoteChartVisible=1;else config.quoteChartVisible=0};this.RenderQuote=function(quote){var output="";output+="<div class=\"Quote\">";output+="<table><tbody><tr>";if(quote.Symbol.toUpperCase()=="BDMXX"){output+="<td><div class=\"name\"><strong><a href=\"//www.sharebuilder.com/"+config.cobrand+"/research/marketupdate/MoneyMarketFund.aspx\">"+quote.Symbol+"</a></strong> Money Market Fund</div>";output+="<div class=\"name\">View the latest <a href=\"//www.sharebuilder.com/"+config.cobrand+"/research/marketupdate/MoneyMarketFund.aspx\">quote</a> and</div>";output+="<div class=\"name\">other important information</div>";output+="</td>"}else{output+="<th>"+quote.Symbol+"</th>";output+="<td><div class=\"name\">"+quote.CompanyName+"</div>";output+="<div class=\"quote\"><span class=\"q\">$"+quote.LastPrice+"</span> "+quote.FormattedChangeAndPercent()+"</div>";output+="<div class=\"qLinks\">";output+="<a href=\"//www.sharebuilder.com/"+config.cobrand+"/research/marketupdate/getquote.aspx?symbol="+quote.Symbol+"\">Detailed Quote</a>";if(quote.Tradable)output+="&nbsp;|&nbsp;<a href=\"//www.sharebuilder.com/"+config.cobrand+"/trade/orderstatus/tradedecision.aspx?stock="+quote.Symbol+"\" class=\"tradeLink\">Trade</a>";output+="<a href=\"#\" class=\"refreshLink\" title=\"Refresh this Quote\"><img src=\"//content.sharebuilder.com/sharebuilder/common/img/buttons/Bttn_Refresh.png\" alt=\"Refresh this quote\"/></a>";output+="</div>";output+="</td>"}output+="</tr></tbody></table>";output+="</div>";return output};this.RenderQuoteChart=function(quote){var output="";var chartClass="mwchartbackmed";if(quote.QuoteStatus==$qu.QuoteStatus.RealTimeQuote)chartClass="RtChart";output+="<div class=\"chart\" style=\"display:none;\">";output+="<img class=\""+chartClass+"\" src=\""+quote.ChartUrl+"\" width=\"194\" height=\"90\" alt=\"Chart for "+quote.Symbol+"\"/>";output+="</div>";return output};this.RenderQuoteDate=function(quote){var output="";output+="<div id=\"updated\">";output+="As of "+quote.QuoteDate;if(quote.QuoteStatus==$qu.QuoteStatus.RealTimeQuote&&quote.Symbol.toLowerCase()!="$indu")output+="<img src=\"//content.sharebuilder.com/sharebuilder/common/img/icons/realtimequote.png\" alt=\"Real-time\"/>";output+="</div>";return output};this.RenderQuickQuote=function(quotes){if(quotes.length==0||quotes[0]==null){$mq.ShowError("Symbol "+$("#"+config.inputId).val().toUpperCase()+" not found.<br/><br/>Use <a href=\""+$("div.M-MiniQuote a.FindLink").attr("href")+"\">Find Symbol</a> to lookup the symbol for this stock.");return}var quote=quotes[0];if(config.currentSymbol==quote.RequestedSymbol){var output="";output+="<div class=\"QuickQuote\">";output+=this.RenderQuote(quote);output+=this.RenderQuoteChart(quote);output+="</div>";output+="<div class=\"links\"><a class=\"indexLink\" href=\"#viewIndexes\">View indexes</a><a class=\"chartLink\" href=\"#chartToggle\">Show chart</a></div>";output+=this.RenderQuoteDate(quote);this.SetContent(output);$mq.SetQuoteChartDisplay();$("div.Quote a.refreshLink").bind("click",function(e){$mq.GetQuoteData(quote.Symbol);$mq.StopEvent(e)});$(".links a.indexLink").bind("click",function(e){$mq.GetIndexData();$mq.StopEvent(e)});$(".links a.chartLink").bind("click",function(e){$mq.ToggleQuoteChartDisplay();$mq.SetQuoteChartDisplay();$mq.StopEvent(e)})}}};SbWeb.Quote=function(){this.QuoteStatus=$qu.QuoteStatus.DelayedQuote;this.RequestedSymbol="";this.Symbol="";this.CompanyName="";this.LastPrice=0;this.BidPrice=null;this.AskPrice=null;this.Change=0;this.ChangePercent=0;this.Tradable=false;this.QuoteDate="";this.SecurityType="";this.ChartUrl="";FormattedChangeClass=function(value){var cssClass="";if(value>0)cssClass+="ChangeUp";else if(value<0)cssClass+="ChangeDn";else cssClass+="ChangeNC";return cssClass};this.FormattedChange=function(){var cssClass=FormattedChangeClass(this.Change);var output="";output+="<span class=\""+cssClass+"\">"+this.Change+"</span>";return output};this.FormattedChangeAndPercent=function(){var cssClass=FormattedChangeClass(this.Change);if(this.ChangePercent==null)this.ChangePercent="";var output="";output+="<span class=\""+cssClass+"\">"+this.Change;if(this.ChangePercent!="")output+=" ("+this.ChangePercent+"%)";output+="</span>";return output}};var $qu=SbWeb.QuoteUtilities=new function(){this.QuoteStatus={DelayedQuote:0,RealTimeQuote:1,RealTimeQuoteAttempted:2};this.QuoteReturnType={IndexQuote:0,QuickQuote:1,TradeQuote:2};var config={dataUrl:"//www.sharebuilder.com/getquote.axd",dataParam:"s",typeParam:"t"};this.CleanInput=function(inputValue){return inputValue.replace(/[^-\s.$A-Za-z0-9]/g,"")};this.GetQuoteData=function(symbols,returnType,onSuccess,onError){var queryUrl=config.dataUrl+"?"+config.typeParam+"="+returnType;if(symbols instanceof Array){for(i=0;i<symbols.length;i++){queryUrl=queryUrl+"&"+config.dataParam+"="+symbols[i]}}else{queryUrl=queryUrl+"&"+config.dataParam+"="+symbols}$.ajax({url:queryUrl,dataType:'json',success:function(json){var quotes=$qu.ProcessQuoteData(json,onError);if(onSuccess&&quotes!=null)onSuccess(quotes)},error:function(event,error,settings){if(onError)onError(error)}})};this.ProcessQuoteData=function(json,onError){if(json.error){if(onError)onError("error");return null}var quotes=new Array();if(json.results){for(i=0;i<json.results.length;i++){if(json.results[i]&&json.results[i].s){var quote=new SbWeb.Quote();quote.RequestedSymbol=json.results[i].query;quote.QuoteStatus=json.results[i].qstat;quote.Symbol=json.results[i].s;quote.CompanyName=json.results[i].n;quote.LastPrice=json.results[i].q;if(json.results[i].bid)quote.BidPrice=json.results[i].bid;if(json.results[i].ask)quote.AskPrice=json.results[i].ask;quote.Change=json.results[i].c;quote.ChangePercent=json.results[i].pc;quote.Tradable=(json.results[i].t==1?true:false);quote.QuoteDate=json.results[i].d;quote.SecurityType=json.results[i].type;quote.ChartUrl=json.results[i].chartUrl;quotes.push(quote)}}}return quotes}};if(typeof SbWeb.Trade=="undefined"||SbWeb.Trade==null)SbWeb.Trade={};SbWeb.Trade.TradeQuote=function(args){var config={outputId:"#"+args.outputId,tradeContext:args.tradeContext,currentSymbol:"",isNameVisible:(args.isNameVisible!=null?args.isNameVisible:true),isGetLinkEnabled:(args.isGetLinkEnabled!=null?args.isGetLinkEnabled:true),onClickGetLink:args.onClickGetLink};this.GetQuote=function(symbol){if(symbol==""){this.ClearQuote()}else if(config.currentSymbol!=symbol){config.currentSymbol=symbol;$qu.GetQuoteData(symbol,$qu.QuoteReturnType.TradeQuote,this.RenderQuote,null)}};this.ClearQuote=function(){config.currentSymbol="";$(config.outputId).html("")};this.RenderQuote=function(quotes){var quote=quotes[0];if(quote!=null&&quote.RequestedSymbol.toLowerCase()==config.currentSymbol.toLowerCase()){var output="";var nameLabel=(quote.SecurityType=="Option"?"Description":"Name");if(quote.SecurityType=="Option")output+="<div id=\"TradeQuoteOption\" class=\"TradeQuote\">";else output+="<div id=\"TradeQuote\" class=\"TradeQuote\">";output+="<table class=\"Info FormInfo\">";output+="<tbody>";if(config.isNameVisible){output+="<tr class=\"R-Name\">";output+="<th>"+nameLabel+"</th>";output+="<td>"+quote.CompanyName+"</td>";output+="</tr>"}output+="<tr class=\"R-Quote\">";output+="<th>Quote</th>";output+="<td>";if(config.tradeContext.toLowerCase()=="sell"&&quote.BidPrice)output+=quote.BidPrice;else if(config.tradeContext.toLowerCase()=="buy"&&quote.AskPrice)output+=quote.AskPrice;else output+=quote.LastPrice;output+=" <span style=\"margin-left:10px;\">"+quote.FormattedChangeAndPercent()+"</span>";if(quote.QuoteStatus==$qu.QuoteStatus.DelayedQuote&&config.isGetLinkEnabled)output+="<a href=\"#\" class=\"triggerGetLink\">Get Real-time Quote</a>";if(quote.QuoteStatus==$qu.QuoteStatus.RealTimeQuoteAttempted)output+="<a staticlink=\"true\" href=\"/sharebuilder/Help/Topic.aspx?CategoryCode=&FaqCode=FRTQDISCNA#FRTQDISCNA\" onclick=\"return popup.PopupHelp(this);\" class=\"FaqLink FaqLinkInline\">Why is a real-time quote not available?</a>";output+="<span class=\"Date\">";output+=quote.QuoteDate;if(quote.QuoteStatus==$qu.QuoteStatus.RealTimeQuote)output+="<img src=\"//content.sharebuilder.com/sharebuilder/common/img/icons/realtimequote.png\" alt=\"Real-time\"/>";output+="</span>";output+="</td>";output+="</tr>";output+="</tbody>";output+="</table>";if(quote.SecurityType!="Option"&&config.tradeContext.toLowerCase()=="buy"){output+="<input type=\"hidden\" name=\"symbolHidden\" value=\""+quote.Symbol+"\"/>";if(config.tradeContext.toLowerCase()=="buy"&&quote.AskPrice)output+="<input type=\"hidden\" name=\"symbolPriceHidden\" value=\""+quote.AskPrice+"\"/>";else output+="<input type=\"hidden\" name=\"symbolPriceHidden\" value=\""+quote.LastPrice+"\"/>"}output+="</div>";$(config.outputId).html(output);$(config.outputId+" .triggerGetLink").bind("click",function(e){if(config.onClickGetLink)config.onClickGetLink(e)})}else{$(config.outputId).html("")}}};