 Ext.ns('Bats');Bats.MarketShare={failureCnt:0,ttl:60000,deferID:0,cal:null,cal2:null,valueFirst:true,minIncDate:null,minExcDateView:null,minExcDateDownload:null,minDkDateView:null,minDkDateDownload:null,symbolMSURL:'',view:'current',expanded:[],init:function(){minIncDate=new Date(2009,0,2);minExcDateView=new Date(2009,2,20);minExcDateDownload=new Date(2009,2,13);minDkDateView=new Date(2009,8,25);minDkDateDownload=new Date(2009,8,25);this.calendarPopUp();try{Bats.MarketShare.ttl=parseInt(ms_refresh,10);}catch(e){} var brk=msBaseURL.split("/");var brk2=[];for(var i=0;i<brk.length;++i){if(brk[i]!=''){if(brk[i]=='index'||brk[i]=='market') brk2.push('symbol');if(brk[i]!='all') brk2.push(brk[i]);}} symbolMSURL=brk2.join("/");},calendarPopUp:function(){var calendar=Ext.get('mktshare_1_container');var calendarBtn=Ext.get('ms_calendarBtn');cal=new Ext.DatePicker({cls:'datepicker',renderTo:calendar,minDate:minIncDate,maxDate:new Date(),startDay:1,format:'Y-m-d',hidden:true,style:'width: 176px'});var calendar2=Ext.get('mktshare_2_container');var calendarFromBtn=Ext.get('ms_fromCalendarBtn');cal=new Ext.DatePicker({cls:'datepicker',renderTo:calendar,disabledDays:[0,6],minDate:minIncDate,maxDate:new Date(),startDay:1,format:'Y-m-d',hidden:true,style:'width: 176px'});cal2=new Ext.DatePicker({cls:'datepicker',renderTo:calendar2,disabledDays:[0,6],minDate:minIncDate,maxDate:new Date(),startDay:1,format:'Y-m-d',hidden:true,style:'width: 176px'});if(cal_dt!=""){var vals=cal_dt.split("-");cal.setValue(new Date(vals[0],parseInt(vals[1],10)-1,vals[2]));cal2.setValue(new Date(vals[0],parseInt(vals[1],10)-1,vals[2]));} cal.on({'select':{fn:function(datePicker,date){calendar.dom.style.display='none';window.location=calURL+date.format('Y-m-d')+'/';},scope:this}});var dpEl=Ext.get(cal.getEl().dom.id);dpEl.select('table').elements[0].style.width='100%';cal2.on({'select':{fn:function(datePicker,date){cal2.setVisible(false);var s=cal_dt;if(s=='') s=new Date().format('Y-m-d');ms_csv(date.format('Y-m-d'),s);},scope:this}});var dpEl=Ext.get(cal2.getEl().dom.id);dpEl.select('table').elements[0].style.width='100%';calendarBtn.on({'click':{fn:function(){this.toggleCal();calendar.dom.style.display='block';},scope:this}});calendarFromBtn.on({'click':{fn:function(){this.toggleFromCal();calendar2.dom.style.display='block';},scope:this}});},toggleCal:function(){cal.setVisible(!cal.isVisible());},toggleFromCal:function(){cal2.setVisible(!cal2.isVisible());},toggleAggregate:function(opMode,venue){if(Bats.MarketShare.expanded.contains(venue)){Bats.MarketShare.expanded.remove(venue);var el=document.getElementById('deagg-'+opMode+'-'+venue);el.className=el.className.replace(/contract/,'expand');var tr=el.parentNode.parentNode;if(tr.sectionRowIndex==1){tr.className='odd';}else{for(var i=1;i<tr.sectionRowIndex;i++){var className=tr.parentNode.rows[tr.sectionRowIndex-i].className;if(className=='odd'){tr.className='even';break;}else if(className=='even'){tr.className='odd';break;}}} for(var i=0;i<deaggregateMapping[venue].length;++i){tr.parentNode.rows[tr.sectionRowIndex+i+1].style.display='none';}}else{Bats.MarketShare.expanded.push(venue);var el=document.getElementById('deagg-'+opMode+'-'+venue);el.className=el.className.replace(/expand/,'contract');var tr=el.parentNode.parentNode;tr.className='parent';for(var i=0;i<deaggregateMapping[venue].length;++i){var newVenueCode=deaggregateMapping[venue][i];var newVenueAvgData=null;for(var j=0;j<avg_data[bias][opMode][auctions].data.length;j++){var base=avg_data[bias][opMode][auctions].data[j];if(base.mktname==newVenueCode){newVenueAvgData=base;break;}} var newRow=tr.parentNode.insertRow(tr.sectionRowIndex+i+1);newRow.className='subvenue';newRow.id='subvenue-'+opMode+'-'+newVenueCode;var th=document.createElement('th');th.className='loading';th.colSpan=tr.childNodes.length;th.innerHTML='&nbsp;';newRow.appendChild(th);} Bats.MarketShare.load();}},loadFailed:function(){Bats.MarketShare.failureCnt++;if(Bats.MarketShare.failureCnt==4){return;} Bats.MarketShare.ttl=Bats.MarketShare.ttl*2;Bats.MarketShare.deferID=Bats.MarketShare.load.defer(Bats.MarketShare.ttl,this,[]);},rowHtml:function(opMode,mktname,isSubVenue,baseData,ri,alternate,field_prefix,alt_field_prefix,valueKey,msKey,alternateValueKey,alternateMsKey,foundIntegrated){var html=[];html.push('<th nowrap'+(isSubVenue?' class="subvenue"':'')+'>');if(deaggregate.contains(mktname)){html.push("<span id='deagg-"+opMode+'-'+mktname+"' class='icon icon-"+ (Bats.MarketShare.expanded.contains(mktname)?'contract':'expand')+"' onclick='Bats.MarketShare.toggleAggregate(\""+opMode+"\", \""+mktname+"\")'></span>");} if(isSubVenue) html.push(baseData[ri].mkthtml);else html.push("<a href='"+venueURL+mktname+"/' title='View Historical Market Share Data for "+ baseData[ri].mkthtml+"'>"+baseData[ri].mkthtml+"</a>&nbsp;");for(var rj=0,rjlen=baseData[ri].data.length;rj<rjlen;++rj){var d=baseData[ri].data[rj];if(d[valueKey]>0){if(Bats.MarketShare.valueFirst){html.push('<td class="idx_val" title="'+bats.comma_two_dec_perc(d[msKey])+'%">'+field_prefix+bats.comma_zero_dec(d[valueKey])+'</td>');}else{html.push('<td class="idx_val" title="'+alt_field_prefix+bats.comma_zero_dec(d[valueKey])+'">'+bats.comma_two_dec_perc(d[msKey])+'%</td>');}}else{html.push('<td class="idx_val">&nbsp;</td>');}} html.push('<td class="idx_val_tot">'+field_prefix+bats.comma_zero_dec(baseData[ri][valueKey])+'</td>');html.push('<td class="idx_pct">'+bats.comma_two_dec_perc(baseData[ri][msKey])+"%</td>");if(opMode!='normal'||!foundIntegrated){for(var k=0;k<alternate.length;++k){if(alternate[k].mktname==baseData[ri].mktname){html.push('<td class="idx_pct_5_day">'+bats.comma_two_dec_perc(alternate[k][alternateMsKey])+"%</td>");break;}}} html.push('</tr>');if(!isSubVenue&&deaggregate.contains(mktname)&&Bats.MarketShare.expanded.contains(mktname)){for(var i=ri;i<baseData.length;i++){for(var rj=0;rj<deaggregateMapping[mktname].length;rj++){var targSubVenue=deaggregateMapping[mktname][rj];if(baseData[i].mktname==targSubVenue){html.push('<tr class="subvenue" id="subvenue-'+opMode+'-'+targSubVenue+'" style="height:auto;visibility:visible">');html.push(Bats.MarketShare.rowHtml(opMode,targSubVenue,true,baseData,i,alternate,field_prefix,alt_field_prefix,valueKey,msKey,alternateValueKey,alternateMsKey,foundIntegrated));break;}}}} return html.join('');},show:function(data,params){res=Ext.decode(data.responseText);Bats.MarketShare.ttl=res.reload;document.getElementById('allLoading').style.display='none';Ext.get('ms_disclaimer').update(res.data.disclaimer);var html=['<table cellspacing=0><tr class="header"><td class="header blank"></td>'];for(var ri=0,rilen=res.data.top_count;ri<rilen;++ri){var t=res.data.top[ri].val;var ta=venueURL+res.data.type+"/";if(res.data.type=='market') ta+=res.data.top[ri].val.toLowerCase()+"/";else ta+=res.data.top[ri].key+"/";html.push('<td valign="bottom" class="header"><a href="'+ta+'">'+t+'</a></td>');} html.push('<td valign="bottom" class="header">Market<sup>*</sup><a href="'+allWithDateURL+'">');if(res.data.top_count>6){html.push("<div id='mktshare_notall'>");} else{html.push("<div id='mktshare_all'>");} html.push("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div></a></td>");if(Bats.MarketShare.view=='current'){html.push('<td valign="bottom" class="header" id="today_header">Today % of Mkt</td>'+'<td class="avg" id="avg_header">5 Day Avg % of Mkt</td></tr>');}else{html.push('<td class="avg" id="avg_header">5 Day Avg % of Mkt</td>'+'<td valign="bottom" class="header" id="today_header">Today % of Mkt</td></tr>');} var tbody=document.getElementById('live_table').getElementsByTagName('tbody')[0];var rc="odd";var opModes=['integrated','dark','normal'];var opModeText={'integrated':{'header':'Lit Order Books','total':'Lit Total'},'dark':{'header':'Dark Order Books','total':'Dark Total'},'normal':{'header':'Total Consolidated Volume','total':'Total'}};var foundIntegrated=false;if(Bats.MarketShare.view=='current'){document.getElementById('avg_header').innerHTML='5 Day Avg % of Mkt';document.getElementById('today_header').innerHTML='Today % of Mkt';}else{document.getElementById('avg_header').innerHTML='Today % of Mkt';document.getElementById('today_header').innerHTML='5 Day Avg % of Mkt';} for(var rx=0;rx<opModes.length;rx++){opMode=opModes[rx];var found=false;for(var ri=0,rilen=tbody.rows.length;ri<rilen;ri++){if(tbody.rows[ri].id=='l_'+opMode){found=true;if(opMode=='integrated') foundIntegrated=true;break;}} if(!found) continue;var baseData;var alternate;var valueKey;var msKey;var alternateValueKey;var alternateMsKey;var baseTotals;var alternateTotals;var baseTotal;var alternateTotal;var skipVenues=[];if(Bats.MarketShare.view=='current'){baseData=res.data.stats[opMode];alternate=avg_data[bias][opMode][auctions].data;valueKey='value';msKey='mktshare';alternateValueKey='avg_value';alternateMsKey='avg_mktshare';baseTotals=res.data.totals[opMode];alternateTotals=res.data.avg_totals[opMode];baseTotal=res.data.total[opMode];alternateTotal=res.data.avg_total[opMode];}else{baseData=avg_data[bias][opMode][auctions].data;alternate=res.data.stats[opMode];valueKey='avg_value';msKey='avg_mktshare';alternateMsKey='mktshare';alternateValueKey='value';baseTotals=res.data.avg_totals[opMode];alternateTotals=res.data.totals[opMode];baseTotal=res.data.avg_total[opMode];alternateTotal=res.data.total[opMode];} if(typeof(baseData)!='undefined'&&(opMode!='normal'||!foundIntegrated)){html.push("<tr id='l_"+opMode+"'><th colspan='99' class='summaryType'>"+opModeText[opMode].header+"</th></tr>");for(var ri=0,rilen=baseData.length;ri<rilen;++ri){var mktname=baseData[ri].mktname.toLowerCase();var isSubVenue=false;if(deaggregate.contains(mktname)){for(var rj=0;rj<deaggregateMapping[mktname].length;rj++){skipVenues.push(deaggregateMapping[mktname][rj]);}} if(res.data.disabled.contains(mktname)||skipVenues.contains(mktname)) continue;html.push('<tr class="');if(mktname=="bats"){html.push('bats">');}else if(deaggregate.contains(mktname)&&Bats.MarketShare.expanded.contains(mktname)){html.push('parent">');}else{html.push(rc+'">');rc=rc=="odd"?"even":"odd";} html.push(Bats.MarketShare.rowHtml(opMode,mktname,false,baseData,ri,alternate,field_prefix,alt_field_prefix,valueKey,msKey,alternateValueKey,alternateMsKey,foundIntegrated));}}else if(opMode=='normal'){html.push("<tr id='l_"+opMode+"'><th colspan='99' class='summaryType'>"+opModeText[opMode].header+"</th></tr>");} html.push('<tr class="'+(opMode=='normal'?'consol':'')+'total"><th>'+opModeText[opMode].total+'</th>');for(var rj=0,rjlen=baseTotals.length;rj<rjlen;++rj){if(opMode=='normal'){html.push('<td class="idx_val">'+field_prefix+bats.comma_zero_dec(baseTotals[rj][0])+'</td>');}else if(Bats.MarketShare.valueFirst){html.push('<td class="idx_val" title="'+bats.comma_two_dec_perc(baseTotals[rj][1])+'%">'+field_prefix+bats.comma_zero_dec(baseTotals[rj][0])+'</td>');}else{html.push('<td class="idx_val" title="'+alt_field_prefix+bats.comma_zero_dec(baseTotals[rj][0])+'">'+bats.comma_two_dec_perc(baseTotals[rj][1])+'%</td>');}} html.push('<td class="idx_val">'+field_prefix+bats.comma_zero_dec(baseTotal[0])+'</td>');if(opMode=='normal'){html.push('<td class="idx_pct">100%</td><td class="idx_pct_5_day">100%</td></tr>');} else{html.push('<td class="idx_pct">'+bats.comma_two_dec_perc(baseTotal[1])+'%</td>');html.push('<td class="idx_pct_5_day">'+bats.comma_two_dec_perc(alternateTotal[1])+'%</td>');html.push('</tr><tr><th colspan=99>&nbsp;</th></tr>');}} tbody=null;Ext.get('live_table').update(html.join(''));html=[];var skipVenues=[];for(var ri=0;ri<deaggregate.length;ri++){for(var rj=0;rj<deaggregateMapping[deaggregate[ri]].length;rj++){skipVenues.push(deaggregateMapping[deaggregate[ri]][rj]);}} var rows=document.getElementById('breakdown_table').getElementsByTagName('tbody')[0].rows;var rioffset=0;for(var ri=0,rilen=res.data.comp_stats.data_count;ri<rilen;++ri){var idx=res.data.comp_stats.data[ri];if(!idx.scale){rioffset--;continue;} rows[ri+rioffset].cells[0].innerHTML=(allowSymbols?('<a rel="lightbox" href="/'+symbolMSURL+'/'+idx.idxstub+ (cal_dt!=''?('/'+cal_dt):'')+'/?bias='+bias+'" title="'+idx.idx+'" style="float:right"><img src="/res/silk/icons/application_view_detail.png" alt="View Symbol Detail" title="View Symbol Detail"/>'+'</a>'):'')+'<a href="'+venueURL+res.data.type+'/'+idx.idxstub+'/">'+idx.idx+'</a>';rows[ri+rioffset].cells[1].innerHTML=idx.value==0?"&nbsp;":(field_prefix+bats.comma_zero_dec(idx.value));rows[ri+rioffset].cells[2].innerHTML=field_prefix+bats.comma_zero_dec(idx.total);rows[ri+rioffset].cells[3].innerHTML=idx.value==0?"0.00%":(bats.comma_two_dec_perc(idx.mktshare)+"%");var html=[];html.push('<div style="width:355px; white-space:nowrap;">');html.push('<table border="0" cellpadding="0" cellspacing="0" class="vol_bars"><tr>');for(var rj=0,rjlen=idx.data_count;rj<rjlen;++rj){var mkt=idx.data[rj];if(skipVenues.contains(mkt.mktname)) continue;if(bats.comma_two_dec_perc(mkt.mktshare)!="0.00"){var width=Math.round(mkt.mktshare*idx.multiplier);html.push('<td class="vol_bar_'+mkt.mktname+'" style="width:'+width+'px;" title="'+mkt.mkthtml+': '+bats.comma_two_dec_perc(mkt.mktshare)+'%">');html.push('<img width="'+width+'" height="15" border="0" src="/res/_img/sprites/spacer.gif" /></td>');}} html.push("</tr></table></div>");rows[ri+rioffset].cells[4].innerHTML=html.join("");} for(var ri=0,rilen=res.data.comp_stats.data_count;ri<rilen;++ri){var idx=res.data.comp_stats.data[ri];if(idx.scale){rioffset--;continue;} rows[ri+rilen+rioffset+1].cells[0].innerHTML=(allowSymbols?('<a rel="lightbox" href="/'+symbolMSURL+'/'+idx.idxstub+ (cal_dt!=''?('/'+cal_dt):'')+'/?bias='+bias+'" title="'+idx.idx+'" style="float:right"><img src="/res/silk/icons/application_view_detail.png" alt="View Symbol Detail" title="View Symbol Detail"/>'+'</a>'):'')+'<a href="'+venueURL+res.data.type+'/'+idx.idxstub+'/">'+idx.idx+'</a>';rows[ri+rilen+rioffset+1].cells[1].innerHTML=idx.value==0?"&nbsp;":(field_prefix+bats.comma_zero_dec(idx.value));rows[ri+rilen+rioffset+1].cells[2].innerHTML=field_prefix+bats.comma_zero_dec(idx.total);rows[ri+rilen+rioffset+1].cells[3].innerHTML=idx.value==0?"0.00%":(bats.comma_two_dec_perc(idx.mktshare)+"%");var html=[];html.push('<div style="width:355px; white-space:nowrap;">');html.push('<table border="0" cellpadding="0" cellspacing="0" class="vol_bars"><tr>');for(var rj=0,rjlen=idx.data_count;rj<rjlen;++rj){var mkt=idx.data[rj];if(skipVenues.contains(mkt.mktname)) continue;if(bats.comma_two_dec_perc(mkt.mktshare)!="0.00"){var width=Math.round(mkt.mktshare*idx.multiplier);html.push('<td class="vol_bar_'+mkt.mktname+'" style="width:'+width+'px;" title="'+mkt.mkthtml+': '+bats.comma_two_dec_perc(mkt.mktshare)+'%">');html.push('<img width="'+width+'" height="15" border="0" src="/res/_img/sprites/spacer.gif" /></td>');}} html.push("</tr></table></div>");rows[ri+rilen+rioffset+1].cells[4].innerHTML=html.join("");} document.getElementById('end_ts').innerHTML=res.data.end_ts;document.getElementById('bats_index_d').style.display='block';for(var rj=0,rjlen=res.data.disabled.length;rj<rjlen;++rj){if(res.data.disabled[rj]=='bats') document.getElementById('bats_index_d').style.display='none';} if(Bats.MarketShare.ttl>0){Bats.MarketShare.deferID=Bats.MarketShare.load.defer(Bats.MarketShare.ttl,this,[]);}},load:function(){clearTimeout(Bats.MarketShare.deferID);document.getElementById('allLoading').style.display='inline';Bats.MarketShare.expanded.sort();Ext.Ajax.request({url:msBaseURL+"data/",success:Bats.MarketShare.show,failure:Bats.MarketShare.loadFailed,disableCaching:false,params:{bias:bias,limit:limit,dt:cal_dt,auctions:auctions,expanded:Bats.MarketShare.expanded.join(',')}});},switchBias:function(newBias){bias=newBias;switch(newBias){case'Notional Value':case'Average Trade Size':field_prefix='&euro;';alt_field_prefix='EUR ';document.getElementById('ft_nv').style.display='inline';document.getElementById('ft_vol').style.display='none';break;default:field_prefix='';alt_field_prefix='';document.getElementById('ft_vol').style.display='inline';document.getElementById('ft_nv').style.display='none';break;} if(!Bats.MarketShare.valueFirst){var switchText='';switch(newBias){case'Notional Value':switchText='&euro;';break;case'Volume':switchText='share';break;case'Trade Count':switchText='trade';break;case'Average Trade Size':switchText='&euro; / trade';break;} document.getElementById('ms_switch_txt').innerHTML=switchText;} var items=document.getElementById('marketMenu').getElementsByTagName('li');for(var i=0,len=items.length;i<len;++i) items[i].className="";document.getElementById(bias.toLowerCase().replace(/ /g,'')+'SummaryBtn').className="selected";Bats.MarketShare.load();},switchView:function(newView){if(Bats.MarketShare.view!=newView){Bats.MarketShare.view=newView;var items=document.getElementById('marketSubmenu').getElementsByTagName('li');for(var i=0,len=items.length;i<len;++i) items[i].className=items[i].className.replace(/ selected$/,'');document.getElementById(newView+'DayBtn').className="leaf "+newView+"-day selected";var bTable=Ext.get('bats_index_d');if(newView=='many'){bTable.setVisible(false,{duration:1,scope:this});bTable.setHeight(0,{duration:2,scope:this});} else{bTable.autoHeight(true,2);bTable.setVisible(true,{duration:2,scope:this});} Bats.MarketShare.load();}},toggleDisplay:function(){Bats.MarketShare.valueFirst=!Bats.MarketShare.valueFirst;if(!Bats.MarketShare.valueFirst){var switchText='';switch(bias){case'Notional Value':switchText='&euro;';break;case'Volume':switchText='share';break;case'Trade Count':switchText='trade';break;case'Average Trade Size':switchText='&euro; / trade';break;} document.getElementById('ms_switch_txt').innerHTML=switchText;}else document.getElementById('ms_switch_txt').innerHTML='%';var tables=['live_table','avg_table'];for(var x=0;x<tables.length;x++){var rows=[];var table=document.getElementById(tables[x]);if(table) rows=table.getElementsByTagName('tbody')[0].rows;for(var ri=0,rilen=rows.length;ri<rilen;++ri){switch(rows[ri].className){case'odd':case'even':case'bats':case'total':case'parent':case'subvenue':for(var rj=0,rjlen=rows[ri].cells.length;rj<rjlen;++rj){if(rows[ri].cells[rj].className=='idx_val'){var tmp=rows[ri].cells[rj].title;if(tmp=='')continue;rows[ri].cells[rj].title=rows[ri].cells[rj].innerHTML;rows[ri].cells[rj].innerHTML=tmp.replace(/EUR /,'&euro;');}} break;}}}},toggleAuctions:function(val){Ext.get(val?'auctionless':'normal').dom.className='';auctions=val?'y':'n';Ext.get(val?'normal':'auctionless').dom.className='selected';switch(auctions){case'n':cal.setMinDate(minExcDateView);cal2.setMinDate(minExcDateDownload);break;case'y':default:cal.setMinDate(minIncDate);cal2.setMinDate(minIncDate);break;} Bats.MarketShare.load();}};Ext.onReady(function(){Bats.MarketShare.init();if(Bats.MarketShare.ttl>0){Bats.MarketShare.deferID=Bats.MarketShare.load.defer(Bats.MarketShare.ttl,this,[]);}});
 function clog(){if(window.console&&window.console.firebug){window.console.log.apply(this,arguments);}} String.prototype.cap1stChar=function(){return this.substring(0,1).toUpperCase()+ this.substring(1,this.length);};Array.prototype.equals=function(oa){if(oa&&oa.length==this.length){if(this===oa){return true;} for(var idx=0;idx<this.length;idx++){if(this[idx]!==oa[idx]){return false;}} return true;} return false;};Array.prototype.contains=function(element){for(var i=0;i<this.length;i++){if(this[i]==element){return true;}} return false;};Array.prototype.getRandomItem=function(){var idx=Math.floor(Math.random()*this.length);return this[idx];};if(!Array.prototype.forEach){Array.prototype.forEach=function(fun){var len=this.length>>>0;if(typeof fun!="function"){throw new TypeError();} var thisp=arguments[1];for(var i=0;i<len;i++){if(i in this){fun.call(thisp,this[i],i,this);}}};} var bats=bats||{};bats.getRandomInt=function(min,max){return Math.floor(Math.random()*(max-min+1))+min;};bats.apply=function(o,c,defaults){if(defaults){bats.apply(o,defaults);} if(o&&c&&typeof c=='object'){for(var p in c){o[p]=c[p];}} return o;};bats.applyIf=function(o,c){if(o&&c&&typeof c=='object'){for(var p in c){if(typeof(o[p])==='undefined'){o[p]=c[p];}}} return o;};bats.applyIf(bats,{copyright:"Copyright(c) 2007-2010, BATS Trading, Inc.",MT_CSV:'text/csv',MT_HTML:'text/html',MT_JAVASCRIPT:'text/javascript',region:null,envOffset:null,localOffset:new Date().getGMTOffset()/100,tzOffset:function(){if(bats.envOffset===null){return 0;} return bats.envOffset-bats.localOffset;},isEcn:function(){return(bats.region=='ecn')?true:false;},isMtf:function(){return(bats.region=='mtf')?true:false;},messages:{'matched volume':{title:'Matched Volume',icon:'INFO',modal:false,msg:'Volume that is matched internally on the BATS book.'+' All volume that is not routed.'}},txtMap:{'key':'value'},openWin:function(config){config=typeof config=="object"?config:{};defaults={name:"_blank",src:"",scrollbars:0,menubar:0,toolbar:0,status:0,resizable:0,location:0};for(var key in defaults){if(!config[key]){config[key]=defaults[key];}} if(config.center){x=window.screenX?window.screenX:window.screenLeft;y=window.screenY?window.screenY:window.screenTop;x=Math.floor(x/screen.width)*screen.width;y=Math.floor(y/screen.height)*screen.height;config.left=(screen.width-config.width)/2+x;config.top=(screen.height-config.height)/2+y;} props=((config.width>0)?",width="+config.width:"")+ ((config.height>0)?",height="+config.height:"")+ ((config.top>0)?",top="+config.top:"")+ ((config.left>0)?",left="+config.left:"")+ ((config.scrollbars===0)?",scrollbars=0":",scrollbars=1")+ ((config.menubar===0)?",menubar=0":",menubar=1")+ ((config.toolbar===0)?",toolbar=0":",toolbar=1")+ ((config.status===0)?",status=0":",status=1")+ ((config.resizable===0)?",resizable=0":",resizable=1")+ ((config.location===0)?",location=0":",location=1");props=props.substring(1,props.length);return window.open(config.src,config.name,props);},wait:function(msecs){var start=new Date().getTime();var cur=start;while(cur-start<msecs){cur=new Date().getTime();}},roundNumber:function(val,rlength){var rnum=val;var newnumber;if(rnum>8191&&rnum<10485){rnum=rnum-5000;newnumber=Math.round(rnum*Math.pow(10,rlength))/Math.pow(10,rlength);newnumber=newnumber+5000;} else{newnumber=Math.round(rnum*Math.pow(10,rlength))/Math.pow(10,rlength);} return newnumber;},formatNumericComma:function(v){v+='';parts=v.split('.');var whole=parts[0];var dec=parts.length>1?'.'+parts[1]:'';var r=/(\d+)(\d{3})/;while(r.test(whole)){whole=whole.replace(r,'$1'+','+'$2');} return whole+dec;},comma_zero_dec:function(val){var parts=(''+Math.round(val)).split(".");switch(parts.length){case 0:return"0";} if(parts[0]===""){parts[0]="0";} return bats.formatNumericComma(parts[0]);},comma_two_dec:function(val){var parts=(""+(Math.round(val*100)/100)).split(".");switch(parts.length){case 0:return"0.00";case 1:parts.push("0");} if(parts[0]===""){parts[0]="0";} if(parts[1]===""){parts[1]="0";} if(parts[1].length==1){parts[1]+="0";} return bats.comma_zero_dec(parts[0])+"."+parts[1].charAt(0)+parts[1].charAt(1);},comma_four_dec_trimmed_to_two:function(val){var parts=(""+(Math.round(val*10000)/10000)).split(".");switch(parts.length){case 0:return"0.00";case 1:parts.push("00");} if(parts[0]===""){parts[0]="0";} if(parts[1]===""){parts[1]="0";} switch(parts[1].length){case 1:parts[1]+="0";break;case 2:break;case 3:parts[1]+="0";case 4:if(parts[1].charAt(2)=='0'&&parts[1].charAt(3)=='0'){parts[1]=parts[1].slice(0,2);} break;default:parts[1]=parts[1].slice(0,4);} return bats.comma_zero_dec(parts[0])+"."+parts[1];},comma_two_dec_perc:function(val){return bats.comma_two_dec(100.0*val);},clone:function(oClone){if(typeof(oClone)!='object'){return oClone;} if(oClone===null){return oClone;} var retVal={};for(var i in oClone){retVal[i]=bats.clone(oClone[i]);} return retVal;},XMLtoString:function(elem){var serializer=null;var serialized;try{serializer=new XMLSerializer();serialized=serializer.serializeToString(elem);} catch(e){if(Ext.isIE){serialized=elem.xml;}} if(serializer!==null){serializer=null;} return serialized;},formatAjaxErrorMessage:function(xmlHttpRequest,bHtml){bHtml=bHtml?true:false;if(bHtml){newline='<br/>';bold=['<strong>','</strong>'];}else{newline='\n';bold='';} retVal=bold[0]+'ERROR: '+xmlHttpRequest.status+' - '+xmlHttpRequest.statusText+ newline+ xmlHttpRequest.responseText+ bold[1];return retVal;},copy2clip:function(txt){var clipboard;if(!document.getElementById('ext-clipboard')){clipboard=document.createElement('textarea');clipboard.id='ext-clipboard';clipboard.style.display="none";document.body.appendChild(clipboard);} clipboard=document.getElementById('ext-clipboard');clipboard.value=txt;if(clipboard.createTextRange){var range=clipboard.createTextRange();if(range){range.execCommand('Copy');}} else{var flashcopier='flashcopier';if(!document.getElementById(flashcopier)){var divholder=document.createElement('div');divholder.id=flashcopier;document.body.appendChild(divholder);} document.getElementById(flashcopier).innerHTML='';var divinfo='<embed src="/res/flashcopier/clipboard.swf" FlashVars="clipboard='+encodeURIComponent(clipboard.value)+'" width="0" height="0" type="application/x-shockwave-flash"></embed>';document.getElementById(flashcopier).innerHTML=divinfo;}},removeAllChildren:function(extElem){while(extElem.dom.firstChild){extElem.dom.removeChild(extElem.dom.firstChild);}},formFailure:function(frm,action){if(action.result){bats.formSuccess(frm,action);}else{bats.failureHandler(action.response.statusText);}},ajaxFailure:function(response,request){bats.failureHandler(response.statusText);},failureHandler:function(failureTxt){var msg='There was a failure while communicating with the server.';bats.showMsg({title:failureTxt,icon:'ERROR',msg:msg});},formSuccess:function(frm,action,fn){var result=action.result;bats.successHandler(result,fn);},ajaxSuccess:function(response,request,fn){var result=Ext.decode(response.responseText);bats.successHandler(result,fn);},successHandler:function(result,fn){if(result.msg){if(!result.level){result.level='INFO';} var msgCfg={icon:result.level,msg:result.msg};if(fn){msgCfg.fn=fn;} this.showMsg(msgCfg);}},formErrors:function(frm,result){if(result.errors){var errors=result.errors;var errMsg,f;for(fieldName in errors){errMsg=errors[fieldName];f=frm.findField(fieldName);f.markInvalid(errMsg);}}},showMsg:function(config){config=config||{};if(typeof config!='object'){config={msg:config};} msgConfig={modal:true,title:'',icon:'INFO',msg:'',buttons:'OK',maxWidth:600};bats.apply(msgConfig,config);if(typeof Ext!='object'){return alert(msgConfig.msg);} msgConfig.icon=Ext.MessageBox[msgConfig.icon];msgConfig.buttons=Ext.MessageBox[msgConfig.buttons];Ext.Msg.maxWidth=msgConfig.maxWidth;Ext.Msg.show(msgConfig);}});