
(function($)
{var defaults={tickerSize:4,itemSelector:".qbeitem",itemCollectionSelector:".qbeitemcollection",textBoxSelector:"#txtQbe",getQuoteBtnSelector:"#getquote",marketStatusSelector:".marketstatus",notAvailableText:"NA",qbeInputText:"Name or symbol(s)",qbeGetQuoteText:"GET QUOTE",textBoxBlurClass:"blurtext"},qbeItem="<span class='qbeitem' style='border:solid 1px black;font-size:11px;margin-right:-1px;' id='{0}'><span class='itemspan' style='border-right:solid 1px #999999;'><a href='{5}' alt='{4}' title='{4}'>&nbsp;{0}&nbsp;</a></span><span class='itemspan' style='color:black;border-right:solid 1px #999999;'>&nbsp;{1}&nbsp;</span><span class='itemspan' style='border-right:solid 1px #999999;'>&nbsp;{2}&nbsp;</span><span class='itemspan'>&nbsp;{3}&nbsp;</span></span>",qbeBlankItem="",hiddenQuotes=[],updatedQuotes=[],tickerArray=[],refreshTimer={},updateTimer={},stopStreaming=true;$.fn.quoteBoxEverywhere=function(options)
{var settings=$.extend(true,{},defaults,options);return this.each(function()
{if($.qbeDynamicUrl!='undefined'&&$.qbeDefault)
{initializeTicker();}});function initializeTicker()
{$(settings.textBoxSelector).attr("value",settings.qbeInputText);$(settings.textBoxSelector).focus(function(){if(this.value==settings.qbeInputText){this.value="";$(this).removeClass(settings.textBoxBlurClass);}});$(settings.textBoxSelector).blur(function(){if(!this.value){this.value=settings.qbeInputText;$(this).addClass(settings.textBoxBlurClass);}});$(settings.getQuoteBtnSelector).click(function(){window.location=$.qbeGetQuoteUrl+$(settings.textBoxSelector).attr("value");});$(settings.textBoxSelector).keypress(function(event){if(event.keyCode=='13'){$(settings.getQuoteBtnSelector).click();}});$(settings.getQuoteBtnSelector).attr("value",settings.qbeGetQuoteText);$.qbeDynamicUrl=unescape($.qbeDynamicUrl)
getSPSTickers();refreshMarketStatus();}
function getSPSTickers()
{$.ajax({url:$.qbeReadUserListUrl,dataType:'jsonp',success:getSPSTickersCallback});}
function getSPSTickersCallback(data)
{var qbeUser="";if(data&&data.length>0)
{qbeUser=data[0];}
var qbeDefault=cleanTickers($.qbeDefault);tickerArray=qbeDefault.toUpperCase().split(",");var defaultTickers=tickerArray.slice(0,settings.tickerSize);var fillerTickers=tickerArray.slice(settings.tickerSize);tickerArray=defaultTickers;if(qbeUser.length>0)
{qbeUser=cleanTickers(qbeUser).toUpperCase();var userArray=qbeUser.split(",");for(var i=0;i<userArray.length;i++)
{if($.inArray(userArray[i],tickerArray)==-1)
{tickerArray.push(userArray[i]);}}}
var openSpaces=(tickerArray.length%settings.tickerSize);if(openSpaces>0)
{tickerArray=tickerArray.concat(fillerTickers.slice(0,settings.tickerSize-openSpaces));}
$.ajax({url:$.qbeDynamicUrl.format(tickerArray.join(",")),dataType:'jsonp',success:initialServiceCallback});if(!$.qbeStreamingTimeout)
{$.qbeStreamingTimeout=1200000;}
$.timer($.qbeStreamingTimeout,function()
{stopStreaming=true;$.clearTimer(updateTimer);$.clearTimer(refreshTimer);});}
function cleanTickers(tickers)
{if(tickers)
{return tickers.toUpperCase().replace(/US:/gi,"");}}
function refreshTickers()
{if(!stopStreaming)
{$.ajax({url:$.qbeDynamicUrl.format(tickerArray.join(",")),dataType:'jsonp',success:updateTickersCallback});}}
function updateQuote(quote)
{var tickerKey=quote.attr("id");if(updatedQuotes[tickerKey]&&updatedQuotes[tickerKey].StreamingInterval==0)
{return createTicker(updatedQuotes[tickerKey]);}
return quote;}
function updateTickersInPlace()
{if(!stopStreaming)
{$(settings.itemSelector).each(function()
{$(this).html(updateQuote($(this)).html());});$.clearTimer(updateTimer);updateTimer=$.timer($.qbeRefreshRate,updateTickersInPlace);}}
function createTicker(tickerData)
{if(tickerData.Symbol)
{if($.isNumber(tickerData.Last))
{var staticData={CountryCode:"US",Type:"NA"};if(tickerData.Country)
{staticData.CountryCode=tickerData.Country;}
if(tickerData.Type)
{staticData.Type=tickerData.Type;}
var change=new Msn.Money.Quote.Property(staticData,"Change",tickerData.Change);var last=new Msn.Money.Quote.Property(staticData,"Last",tickerData.Last);var percent=new Msn.Money.Quote.Property(staticData,"PercentChange",tickerData.PercentChange);percent=percent.toLocaleString();var alt=tickerData.Symbol;if(tickerData.CompanyName)
{alt=tickerData.CompanyName;}
var url=$.getQuoteDetailUrl(tickerData.Type,tickerData.Symbol,$.qbeLocalServer);var ticker=qbeItem.format(specialSymbolName(tickerData.Symbol),last.toLocaleString(),change.toLocaleString(),percent,alt,url);if(parseFloat(tickerData.Change)>0)
{ticker=$(ticker).addClass("qbepos");}
if(parseFloat(tickerData.Change)<0)
{ticker=$(ticker).addClass("qbeneg");}
return $(ticker);}
else
{return createBlankTicker(tickerData.Symbol,tickerData.Type);}}}
function createBlankTicker(tickerSymbol,tickerType)
{var url=$.getQuoteDetailUrl(tickerType,tickerSymbol,$.qbeLocalServer);var ticker=qbeBlankItem.format(specialSymbolName(tickerSymbol),settings.notAvailableText,url);return $(ticker).addClass("qbeblank");}
function initialServiceCallback(data)
{var dataHash=createDataHash(data);for(var i=0;i<tickerArray.length;i++)
{if(dataHash[tickerArray[i]])
{hiddenQuotes.push(createTicker(dataHash[tickerArray[i]]));}
else
{if(tickerArray[i])
{hiddenQuotes.push(createBlankTicker(tickerArray[i],null));}}}
fadeInTickers();if($.qbeRefreshRate>0)
{$.clearTimer(refreshTimer);refreshTimer=$.timer($.qbeRefreshRate,refreshTickers);}}
function updateTickersCallback(data)
{updatedQuotes=createDataHash(data);if(!stopStreaming)
{$.clearTimer(refreshTimer);refreshTimer=$.timer($.qbeRefreshRate,refreshTickers);}}
function createDataHash(data)
{var hash=new Array();while(data.length>0)
{var dataItem=data.shift()
if(dataItem.Symbol)
{hash[dataItem.Symbol]=dataItem;}}
return hash;}
function fadeOutTickers()
{$(settings.itemCollectionSelector).fadeOut($.qbeFadeTimer,function()
{for(var i=0;i<settings.tickerSize;i++)
{var tickerItem=$(settings.itemSelector).first();if(tickerItem)
{hiddenQuotes.push(tickerItem.detach());}}
fadeInTickers();});}
function fadeInTickers()
{for(var i=0;i<settings.tickerSize;i++)
{var ticker=hiddenQuotes.shift();if(ticker)
{if(!stopStreaming)
{ticker=updateQuote(ticker);}
if(ticker)
{ticker.appendTo(settings.itemCollectionSelector);}}}
$(settings.itemCollectionSelector).fadeIn($.qbeFadeTimer,function()
{if(hiddenQuotes.length>0)
{$.timer($.qbePauseTimer,fadeOutTickers);}
else
{$.clearTimer(updateTimer);updateTimer=$.timer($.qbeRefreshRate,updateTickersInPlace);}});}
function specialSymbolName(symbol)
{if(symbol=="$DJI"||symbol=="$INDU")
{return"DOW";}
if(symbol=="$COMPX")
{return"NASDAQ";}
if(symbol=="$INX")
{return"S&P";}
return symbol;}
function updateMarketStatus(data)
{if(data[0])
{$(settings.marketStatusSelector).attr("href",$.marketStatusLinkUrl);$(settings.marketStatusSelector).html(data[0]);}
if(data.length>1)
{$.timer(Math.abs(parseInt(data[1]))*1000,refreshMarketStatus);}
return data;}
function refreshMarketStatus()
{$.ajax({url:$.qbeMarketUrl,dataType:'jsonp',success:updateMarketStatus});}}})(jQuery);
