new function(){




BMW_RW = new function(){
   var loadgif = "http://i.thestreet.com/files/tsc/bmwwidget/4-1.gif";
   var include_sponsor_logo=false;
   var smsg;
   var xhr = false; 

   // private config variables
   var scriptname = "widget.js";
   var skin_classname = "yui-skin-bmwrw";
   var tab_names = ["Mortgages &amp; <br/>Home Equity","CDs","Money Markets, <br/>Interest Checking <br/>&amp; Savings","Auto Loans"] ;
   var states_label = "bmw_states_options";
   var districts_label = "bmw_districts_options";
   var wsProxy = TSCM.cfg.contextRoot + "/util/rwproxy.jsp";
   var rateSearchDomain = (document.location.href.indexOf("stage")===-1) ? 'www.bankingmyway.com' : 'stage.bankingmyway.com';
   var upgif = "http://yui.yahooapis.com/2.5.2/build/datatable/assets/skins/sam/dt-arrow-up.png";

   var downgif = "http://yui.yahooapis.com/2.5.2/build/datatable/assets/skins/sam/dt-arrow-dn.png";
   var bmwlogo = "http://i.thestreet.com/files/tsc/common/images/bmw/logo-sm.gif";
   smsg = function(m){
      eval('BMW_RW.statusbar.innerHTML = "'  + m + '";');
      window.status = m;
   }


   // private other vars 

   var me; // reference to yui module of whole container 
   var tabView,containerEl,dom,Evt,paramStr,stateOrDistrict,tmpDesc;

   // private functions 
   function log(m){
      if(typeof console != "undefined"){
         console.log(m);
      }
   }
   // for a status message 


   function disableSelection(target){
      if(typeof target == "string"){
         target = dom.get(target);
      }
      if (typeof target.onselectstart!="undefined"){ 
         target.onselectstart=function(){return false}
      } else if (typeof target.style.MozUserSelect!="undefined") {
         target.style.MozUserSelect="none";
      } else {
         target.onmousedown=function(){return false;}
      }
   }



   // get a parameter
   var getParameter = function(qs,name){
      var param = name + '=';
      try {
         var loc = qs.indexOf(param);
         if(loc !=-1){
            var start = loc + param.length;
            var ss = qs.substring(start);
            var end = ss.indexOf('&');
            if(end != -1){
               return ss.substring(0,end);
            }else{
               return ss.substring(0);
            }
         }
      }catch(e){
         return null;
      }
   }

   function getstate(){
         return dom.get(states_label).value;
   }

   function getdist(){
         return dom.get(states_label).value;
   }



   function addScript(params,callback){
      var url = wsProxy + '?params=' + params + '&callback='+ callback;

      if(!xhr){
      var scriptElem = document.createElement('script');
      scriptElem.type = 'text/javascript';
      scriptElem.src = url;
      //dom.get(containerEl).innerHTML = '';
      dom.get(containerEl).appendChild(scriptElem);
      }else{
         var callback = {
            success:function(o){
                       // run the callback
                       eval(o.responseText);
        },
            failure:function(o){
                  this.networkicon.hide();
                  var msg = 'error getting rates.';
                  dom.get("tabresultlbl" + this.getCurTabIndex()).innerHTML = msg;
                 log('failed xhr req');
        }
         }
          var conn = YAHOO.util.Connect.asyncRequest('GET',url, callback, null);

      }
   }

   function makeimg(src){
      return "<img border='0' src='" + src +  "'/>";
   }


   function getselect(id,obs,label){
      function getoption(k,v){
         return "<option value='" + k + "'>" + v + '</option>';
      }

      var s = "<select name='" + id + "' id='" + id + "'>";
      s += getoption('',label);
      for(var i = 0;i<obs.length;i++){
         var opt = obs[i];
         for(var j in opt){
            s += getoption(j,opt[j]);
         }
         

      }
      s += "</select>";

      return s;

   }

   function upordown(rec){
      var o = rec.getData();
      if(o.historicalRate == o.currentRate) { return ""; }
      return (o.historicalRate < o.currentRate) ? makeimg(upgif): makeimg(downgif);

   }

   function formatCurRate(cell, rec, column, data){ 
      cell.innerHTML = upordown(rec) +"&nbsp;&nbsp;" + pctDisplay(rec.getData().currentRate) ; //+ " &nbsp;&nbsp;" + upordown(rec);
   }
   function formatHistRate(cell, rec, column, data){ 
      cell.innerHTML = pctDisplay(rec.getData().historicalRate);
   }

	function pctDisplay(val) {
		// round rates to 2 decimal places
		val = '' + Math.round(val * 100)/100;
		if (val.indexOf('.') < 0) { val += '.00'; }
		else if (val.indexOf('.') == val.length - 2) { val += '0'; }
		return val + '%';
	}

var states = [
{"AK":"Alaska"},
{"AL":"Alabama"},
{"AR":"Arkansas"},
{"AZ":"Arizona"},
{"CA":"California"},
{"CO":"Colorado"},
{"CT":"Connecticut"},
{"DC":"District of Columbia"},
{"DE":"Delaware"},
{"FL":"Florida"},
{"GA":"Georgia"},
{"HI":"Hawaii"},
{"IA":"Iowa"},
{"ID":"Idaho"},
{"IL":"Illinois"},
{"IN":"Indiana"},
{"KS":"Kansas"},
{"KY":"Kentucky"},
{"LA":"Louisiana"},
{"MA":"Massachusetts"},
{"MD":"Maryland"},
{"ME":"Maine"},
{"MI":"Michigan"},
{"MN":"Minnesota"},
{"MO":"Missouri"},
{"MS":"Mississippi"},
{"MT":"Montana"},
{"NC":"North Carolina"},
{"ND":"North Dakota"},
{"NE":"Nebraska"},
{"NH":"New Hampshire"},
{"NJ":"New Jersey"},
{"NM":"New Mexico"},
{"NV":"Nevada"},
{"NY":"New York"},
{"OH":"Ohio"},
{"OK":"Oklahoma"},
{"OR":"Oregon"},
{"PA":"Pennsylvania"},
{"PR":"Puerto Rico"},
{"RI":"Rhode Island"},
{"SC":"South Carolina"},
{"SD":"South Dakota"},
{"TN":"Tennessee"},
{"TX":"Texas"},
{"UT":"Utah"},
{"VA":"Virginia"},
{"VT":"Vermont"},
{"WA":"Washington"},
{"WI":"Wisconsin"},
{"WV":"West Virginia"},
{"WY":"Wyoming"} ];

var districts = [
{"D1" :"District 1 - Boston"}, 
{"D2" :"District 2 - New York"}, 
{"D3" :"District 3 - Philadelphia"}, 
{"D4" :"District 4 - Cleveland"}, 
{"D5" :"District 5 - Richmond"}, 
{"D6" :"District 6 - Atlanta"}, 
{"D7" :"District 7 - Chicago"}, 
{"D8" :"District 8 - St. Louis"}, 
{"D9" :"District 9 - Minneapolis"}, 
{"D10" :"District 10 - Kansas City"}, 
{"D11" :"District 11 - Dallas"}, 
{"D12" :"District 12 - San Francisco"}, 
{"WEST" :"West"}, 
{"CENTRAL" :"Central"}, 
{"NORTHEAST" :"Northeast"}, 
{"SOUTHEAST" :"Southeast"}, 
{"EAST" :"East"}, 
{"COMPOSITE" :"Composite"}];

var cityState = {
	'D1' : 'fCity=BOSTON&fState=MA',
	'D2' : 'fCity=NEW%20YORK&fState=NY',
	'D3' : 'fCity=PHILADELPHIA&fState=PA',
	'D4' : 'fCity=CLEVELAND&fState=OH',
	'D5' : 'fCity=RICHMOND&fState=VA',
	'D6' : 'fCity=ATLANTA&fState=GA',
	'D7' : 'fCity=CHICAGO&fState=IL',
	'D8' : 'fCity=ST%20LOUIS&fState=MO',
	'D9' : 'fCity=MINNEAPOLIS&fState=MN',
	'D10' : 'fCity=KANSAS%20CITY&fState=KS',
	'D11' : 'fCity=DALLAS&fState=TX',
	'D12' : 'fCity=SAN%20FRANCISCO&fState=CA'
};
var itemIdParamByType = {
	'CD' : 'ItemId=30',
	'MM' : 'ItemId=45',
	'IC' : 'ItemId=46',
	'SA' : 'ItemId=47',
	'MG' : 'ItemId=48',
	'HE' : 'ItemId=49',
	'AU' : 'ItemId=50'
};

var productHomePage = {
	'CD' : '?option=com_content&Itemid=37&fFormType=CD',
	'MM' : '?option=com_content&Itemid=38&fFormType=MM',
	'IC' : '?option=com_content&Itemid=40&fFormType=IC',
	'SA' : '?option=com_content&Itemid=39&fFormType=SA',
	'MG' : '?option=com_content&Itemid=36&fFormType=MG',
	'HE' : '?option=com_content&Itemid=41&fFormType=HE',
	'AU' : '?option=com_content&Itemid=42&fFormType=AU'
};

var typeDesc = {
	'MGHE' : 'Mortgages &<br/> Home Equity',
	'CD' : 'CD',
	'MMICSA' : 'Money Markets, <br/>Interest Checking<br/> & Savings',
	'AU' : 'Auto Loans'
};

var typeDescs = [
	{ id:'MGHE' , label:'Mortgages &<br/> Home Equity'},
	{ id:'CD', label: 'CDs'},
	{ id:'MMICSA' , label:'Money Markets, <br/>Interest Checking<br/> & Savings'},
	{ id:'AU' , label:'Auto Loans'}];


var productCodesForTab = { 
	'MGHE' : [ 
			'HOMEEQUITY+84',
			'HOMEEQUITY+60',
			'HOMEEQUITY+36',
			'HOMEEQUITY+180',
			'HOMEEQUITY+120',
			'MortFIX30',
			'MortFIX15',
			'MortARM5',
			'MortARM3',
			'MortARM1'
			],
	
	'CD' : [
			'CD+60',
			'CD+48',
			'CD+36',
			'CD+30',
			'CD+24',
			'CD+12',
			'CD+6',
			'CD+3'
			],

	'MMICSA' : [ 
			'MM',
			'IC',
			'SA'
			 ],

	'AU' : [
			'Auto+Used+60',
			'Auto+Used+48',
			'Auto+Used+36',
			'Auto+New+72',
			'Auto+New+60',
			'Auto+New+48',
			'Auto+New+36'
			]
};

var productDesc = {
	'HOMEEQUITY 84'		: [ '84 Month Home Equity', 'fLength=84' ],
	'HOMEEQUITY 60'		: [ '60 Month Home Equity', 'fLength=60' ],
	'HOMEEQUITY 36'		: [ '36 Month Home Equity', 'fLength=36' ],
	'HOMEEQUITY 180'	: [ '180 Month Home Equity', 'fLength=180' ],
	'HOMEEQUITY 120'	: [ '120 Month Home Equity', 'fLength=120' ],
	'MortFIX30'			: [ '30 Yr Fixed Mortgage', 'fMortgageType=105' ],
	'MortFIX15'			: [ '15 Yr Fixed Mortgage', 'fMortgageType=104' ],
	'MortARM5'			: [ '5 Year ARM', 'fMortgageType=102' ],
	'MortARM3'			: [ '3 Year ARM', 'fMortgageType=101' ],
	'MortARM1'			: [ '1 Year ARM', 'fMortgageType=100' ],

	
	'CD 60'				: [ '60 Month CD', 'fLength=60' ],
	'CD 48'				: [ '48 Month CD', 'fLength=48' ],
	'CD 36'				: [ '36 Month CD', 'fLength=36' ],
	'CD 30'				: [ '30 Month CD', 'fLength=30' ],
	'CD 24'				: [ '24 Month CD', 'fLength=24' ],
	'CD 12'				: [ '12 Month CD', 'fLength=12' ],
	'CD 6'				: [ '6 Month CD', 'fLength=6' ],
	'CD 3'				: [ '3 Month CD', 'fLength=3' ],

	'MM'				: [ 'Money Market', '', '' ],

	'Auto Used 60'		: ['60 Mo. Used Auto Loan', 'fAutoType=2&fAutoTerm=60' ],
	'Auto Used 48'		: [ '48 Mo. Used Auto Loan', 'fAutoType=2&fAutoTerm=48' ],
	'Auto Used 36'		: [ '36 Mo. Used Auto Loan', 'fAutoType=2&fAutoTerm=36' ],
	'Auto New 72'		: [ '72 Month Auto Loan', 'fAutoType=1&fAutoTerm=72' ],
	'Auto New 60'		: [ '60 Month Auto Loan', 'fAutoType=1&fAutoTerm=60' ],
	'Auto New 48'		: [ '48 Month Auto Loan', 'fAutoType=1&fAutoTerm=48' ],
	'Auto New 36'		: [ '36 Month Auto Loan', 'fAutoType=1&fAutoTerm=36' ],

	'IC'				: [ 'Interest Checking', '', '' ],

	'SA'				: [ 'Savings', '', '' ]
};

   return {
      tabs:null,
      init:function(){


         dom = YAHOO.util.Dom;
         Evt = YAHOO.util.Event;

        if(typeof BMW_XHR != "undefined"){
           xhr  =  BMW_XHR;
        }

        containerEl = BMW_RW_CONTAINER;
        if(dom.get(containerEl) === null) {
           // do something smart like add a container el or fail.
        }else{
           dom.setStyle(containerEl,"font-size","10px");
           disableSelection(containerEl);

          me = new YAHOO.widget.Overlay(containerEl, { 
	       visible:false,  
	       zIndex:1000, 
	       effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.25} } ); 
          FOOBAR = me; 

          o1 = new YAHOO.widget.Overlay("overlay1", { fixedcenter:true, 
                visible:true, 
                text:"i am overlay1 ",
                width:"300px" } ); 

        }

              var tabView = new YAHOO.widget.TabView(); 
              this.tabs = tabView;
              dom.addClass(containerEl,skin_classname);
              var active = true;
              for(var i=0;i<tab_names.length;i++){
                  var label = tab_names[i].replace(/<br\/>/g,"") ;
                  var content = "<div class='yui-skin-sam bmw_rw_tabresult'><div class='bmw_rw_tabresult_header' id='tabresultlbl" + i + "'>" +label+ "</div><div id='tabresult" + i + "'>retrieving rates...</div></div>";
                 tabView.addTab( new YAHOO.widget.Tab({ label: tab_names[i], content: content,active:active })); 
                 if(i==0){active=!active;}
              }




         /* this for xdomain script version
         var els = document.getElementsByTagName('script');
         for(var i =0;i<els.length;i++){
            var el = els[i];
            if(el.src.indexOf(scriptname) != -1){
              var src = el.src;
              var qs = src.split('?')[1];
              containerEl = BMW_RW_CONTAINER;
              //containerEl = getParameter(qs,'target');

              if(dom.get(containerEl) === null) {
                 // do something smart like add a container el or fail.
              }else{
                 dom.setStyle(containerEl,"font-size","10px");
                 disableSelection(containerEl);
              }

              var tabView = new YAHOO.widget.TabView(); 
              this.tabs = tabView;
              dom.addClass(containerEl,skin_classname);
              var active = true;
              for(var i=0;i<tab_names.length;i++){
                  var label = tab_names[i].replace(/<br\/>/g,"") ;
                  var content = "<div class='yui-skin-sam bmw_rw_tabresult'><div class='bmw_rw_tabresult_header' id='tabresultlbl" + i + "'>" +label+ "</div><div id='tabresult" + i + "'>retrieving rates...</div></div>";
                 tabView.addTab( new YAHOO.widget.Tab({ label: tab_names[i], content: content,active:active })); 
                 if(i==0){active=!active;}
              }
            }
         }
          /// end xdomain script version */

            if(YAHOO.env.ua.gecko > 0){
                 var el = YAHOO.util.Dom.getElementsByClassName("bmw_rw_tabresult","div",containerEl)[0]; 
                  dom.setStyle(el,"height","275px");
            }
         var sts = document.createElement('div');
         sts.innerHTML = makeimg(loadgif);
         //sts.innerHTML = ""; //makeimg(loadgif);
         sts.setAttribute("id","bmw_widget_status_bar");
         //sts.setAttribute("style","float:right;display:block;top:0px;right:0px;width:14px;height:15px;");
         var xy = dom.getXY(containerEl);
         this.statusbar = sts;

         this.networkicon = new YAHOO.widget.Overlay(sts, { 
	       visible:false,  
	       zIndex:1000, 
	       effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.25} } ); 

         //this.networkicon.setXY(xy);


         tabView.appendTo(containerEl); 

         // header of tab content
         var d = document.createElement('div');
         
         if(include_sponsor_logo){
         d.innerHTML = "<div class='bmw_sponsor_logo msgbox'> sponsor logo goes here</div>";
         }else{
         d.innerHTML = "";
         }


         var par = dom.getElementsByClassName('yui-content')[0];
         var sib = par.firstChild;
         par.insertBefore(d,sib);



         // footer form 
		   var sel1 = getselect(states_label,states,'> search by state'); 
         var sel2 = getselect(districts_label,districts, '> search by district');
         var nat = "<div><button id='bmw_rw_nat'>Get National Averages</button></div>";
         sel1 = "";

         d = document.createElement('div');
         var html = "<div style='width:170px;float:left' class='footer'><form onsubmit='return false;'><table width='100%' cellspacing='2' cellpadding='0' border='0'><tr><td align='right' valign='middle'>"+ "</td><td valign='middle'>" + sel1 + "</td></tr>";
         html += "<tr><td align='right' valign='middle'></td><td valign='middle' >" + sel2 + "</td></tr>";
         html += "<tr><td></td><td  valign='middle'>" + nat + "</td></tr></table></form> </div>";
         html = "";
         html += "<div class='bmw_widget_logo' style='float:right;text-align:right'>powered by <br/><a target='_top' href='http://www.bankingmyway.com/'>" + makeimg(bmwlogo)+"</a></div>";
         d.innerHTML = html;
         //par.appendChild(d);
         dom.get(containerEl).appendChild(d);


         // events 
         tabView.addListener("activeTabChange",this.tabchange,this,true);
         Evt.on('bmw_rw_nat',"click",function(e){ BMW_RW.getNationalRates(e);return false;},this,true);
         BMW_RW.getNationalRates();

         Evt.on(states_label,"change",function(e){ BMW_RW.getStateRates(e);return false;},this,true);
         Evt.on(districts_label,"change",function(e){ BMW_RW.getDistrictRates(e);return false;},this,true);


         //dom.get(containerEl).appendChild(sts);

         return;

      },
      getNationalRates:function(e){
         this.fetchRates(this.getCurrentType(),'','');
      },
      getState:function(){
         return "";
         //return dom.get(states_label).value;
      },
      getStateName:function(){
         var el = dom.get(states_label);
         var state = el.options[el.selectedIndex].text;
         return state;
      },
      getDistrict:function(){
         return dom.get(districts_label).value;
      },
      getDistrictName:function(){
         var el = dom.get(districts_label);
         var dist = el.options[el.selectedIndex].text;
         return dist;
      },
      getStateRates:function(e){
         this.fetchRates(this.getCurrentType(),this.getState(),'state');
      },
      getDistrictRates:function(e){
         this.fetchRates(this.getCurrentType(),this.getDistrict(),'district');
      },

      getCurTabIndex:function(){
         var tab = BMW_RW.tabs.get('activeTab');
         return BMW_RW.tabs.getTabIndex(tab);
      },
      getCurrentType:function(){
         var ob = typeDescs[this.getCurTabIndex()];
         return ob.id;
      },
      fetchRates:function(type, stateDist, sORd) {
         this.networkicon.show();
         var msg;
         this.type = type;

         stateOrDistrict = sORd;
         if (type != '') {
            if (stateOrDistrict == 'state') {
               dom.get(districts_label).selectedIndex = 0;
            } else {
               try {
               dom.get(states_label).selectedIndex = 0;
               }catch(e){}
            }

            var im = makeimg(loadgif);
            if (stateDist != '') {
               msg = typeDesc[type].replace(/<br\/>/g,"") + ' rates for '; 
               msg = "";
               if(sORd == 'state'){
                  msg += this.getStateName();
               }else {
                  msg += this.getDistrictName();
               }
               msg += " Rates";
               this.currentmsg = msg;
               dom.get("tabresultlbl" + this.getCurTabIndex()).innerHTML = msg + '&nbsp;' + im;
            } else {
               msg = typeDesc[type] + ' rates national';
               msg = msg.replace(/<br\/>/,"");
               msg = 'National Average Rates';
               smsg(makeimg(loadgif));
               this.currentmsg = msg;
               dom.get("tabresultlbl" + this.getCurTabIndex()).innerHTML = msg +'&nbsp;' + im;
            }
         } else {

         }

         var prefix = '';
         var delim = ';';
         if (stateDist != '') {
            delim = ';' + stateDist + ':';
            prefix = stateDist + ':';
         }

         if (type == '') { // fetch rates for all products
            paramStr =	prefix + productCodesForTab['MGHE'].join(delim) + 
                     delim + productCodesForTab['CD'].join(delim) + 
                     delim + productCodesForTab['MMICSA'].join(delim) + 
                     delim + productCodesForTab['AU'].join(delim);
            addScript(paramStr,"BMW_RW.showAll");





         } else { // fetch for a single product
            paramStr = prefix + productCodesForTab[type].join(delim);
            addScript(paramStr,"BMW_RW.showSingle");
         }
      },
      showSingle:function(ratesAry) {

         var rateProps = [ 'type', 'productType', 'currentRate', 'historicalRate' ];

         var ratesRowAry = [ ];
         for (var j = 0; j < ratesAry.length; j++) {
            if (ratesAry[j].productType.indexOf("Not Available") > -1) {
               continue;
            }

            var state = '';
            var pType = ratesAry[j].productType;
            var colonIdx = pType.indexOf(':');
            if (colonIdx > -1) { // it is a state specific rate
               state = pType.substring(0, colonIdx);
               pType = pType.substring(colonIdx+1);
            }

            tmpDesc = state + ' ' + productDesc[pType][0];
            tmpDesc = productDesc[pType][0];
            var tmpAry = {};
            var termParam = '';
            if (productDesc[pType][1]) {
               termParam = '&' + productDesc[pType][1];
            }
            if (stateOrDistrict == 'state' && state != '') {
               tmpDesc = '<a target="_top" href="http://' + rateSearchDomain + '/index.php?option=com_content&Itemid=67&_cs=1&fFormType=' + ratesAry[j].type + '&fStage=1&fSearchType=2&fSearchTypeGroup=2' + termParam + '&fState=' + state + '">' + tmpDesc + '</a>';

               //tmpDesc = '<a href="http://' + rateSearchDomain + '/product/search/' + ratesAry[j].type + '/1?fState=' + state + '">' + tmpDesc + '</a>';
            } else if (stateOrDistrict == 'district' && state.match(/^D[0-9]{1,2}$/)) {
               var type  = itemIdParamByType[ratesAry[j].type];

               tmpDesc = productDesc[pType][0];
               tmpDesc = '<a target="_top" href="http://' + rateSearchDomain + '/index.php?option=com_bmwresults&' + type + '&_cs=1&fFormType=' + ratesAry[j].type + '&fLength=0&fInstitutionType=103&fIncludeIB=0&fSearchType=5&' + cityState[state] + '&fZIPCode=&fRadius=' + termParam + '">' + tmpDesc + '</a>';
            } else {
               if (productDesc[pType][1]) {
                  termParam = '&' + productDesc[pType][1];
               }
               tmpDesc = productDesc[pType][0];
               tmpDesc = '<a target="_top" href="http://' + rateSearchDomain + '/index.php?option=com_content&Itemid=67&_cs=1&fFormType=' + ratesAry[j].type + termParam + '&fRateWidget=1&puc=tscbmwratewidget">' + tmpDesc + '</a>';
            }

            var firstParam;
            if(state == ''){
               firstParam = "fRateWidget=1";
            }else{
               firstParam = "fState="+state;
            }
            tmpDesc = '<a target="_top" href="http://' + rateSearchDomain + '/product/search/' + ratesAry[j].type + '/1?' +firstParam + termParam + '&puc=bmw|widget|' + ratesAry[j].type + '">' + state + productDesc[pType][0] + '</a>';

            tmpAry.link = tmpDesc; 
            tmpAry.currentRate = ratesAry[j].currentRate;
            tmpAry.historicalRate = ratesAry[j].historicalRate;
            ratesRowAry[ratesRowAry.length] = tmpAry;
         }
         this.renderDataTable(ratesRowAry);



      },
      renderDataTable:function(data){
         var myColumnDefs = [ 
            {key:"link",label:"Description",width:145},
            {key:"currentRate",label:"This Week",sortable:true,formatter:formatCurRate}, 
            {key:"historicalRate",label:"Last Week",sortable:true,formatter:formatHistRate}
            ]; 
         var myColumnSet = new YAHOO.widget.ColumnSet(myColumnDefs); 
          
            var myDataSource = new YAHOO.util.DataSource(data); 
            myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY; 
            myDataSource.responseSchema = { 
             fields: ["link","currentRate","historicalRate"] 
         }; 

         var singleRowDataTable = new YAHOO.widget.DataTable("tabresult"+BMW_RW.getCurTabIndex(),myColumnSet,myDataSource, { rowSingleSelect:true});
         // need to cache datatables.
         

         this.networkicon.hide();
         dom.get("tabresultlbl" + this.getCurTabIndex()).innerHTML = this.currentmsg; 


      },
      tabchange:function(e){
         this.networkicon.show();
         this.getNationalRates();

      },
      pc:function(i){
            /*
           log(BMW_RW.tabs);
           if(i == -1)return;

           var os = dom.get(states_label).options;
           for(var i=0;i<os.length;i++){
               var f = dom.get(states_label).selectedIndex = i;

           }
           */
      }


   };

}


/** initialize the widget **/
if(window.attachEvent){
   window.attachEvent("onload", function(){
      BMW_RW.init();
   });
}
if(window.addEventListener){
   window.addEventListener("load", function(){
      BMW_RW.init();
   }, false);
}




}

B = BMW_RW;

