
ratingsDomain = "http://ratings.thestreet.com";

// include tscm.js to do this.
TSCM.register("ratings");

__loaded = true;
window.onload = function(){
   __loaded = true;
}

TSCM.config.Config.ecomlink = "https://secure3.thestreet.com/StoreFront/searchadv.aspx?SearchTerm=";


TSCM.ratings.Screener = function(el){
   YAHOO.util.Event.onAvailable(el, this.init, this);  
   //YAHOO.util.Event.onAvailable('eq_form_criteria_opts', this.populateCriteria,this);  // 
}


TSCM.ratings.Screener.prototype = {
    inited:false,
    lastquery:{},
    id:0,
    /*tabview:{}, */
    num_results:20,
    criteria_modules:{ // 
       equities:{ 
          Letter_Rating:"eq_crit_letter",
          Market_Capitalization:"eq_crit_marketcap",
          Sector:"eq_crit_sector",
          Sub_Industry:"eq_crit_subindustry",
          Beta:"eq_crit_beta",
          formname:"eq_form_criteria_opts",
          container:"criteria_equities",
          Exchange:"eq_crit_exchange"
          },
       etfs:{ 
          Fund_Objective:"FundObjective",
          NAV:"nav",
          Star_Rating:"etf_crit_starrating",
          Price:"etf_crit_price",
          Net_Assets:"etf_crit_NetAssets",
          Turnover:"etf_crit_Turnover",
          Recommendation:"etf_crit_recommendation",
          Investment_Rating:"etf_crit_InvestmentRating",
          Load_Status:"etf_crit_LoadStatus",
          Fund_Family:"etf_crit_FundFamily",
          Risk:"etf_crit_risk",
          container:"criteria_etfs",
          formname:"etf_form_criteria_opts",
          Exchange:"etf_crit_exchange"
       },
       funds:{ 
          foo:"bar"
       }
    },

    init:function(id){


         requester = BrowserDetect.browser + BrowserDetect.version;
         
         if( 
               (requester.indexOf("Explorer7")== -1) && 
               (requester.indexOf("Explorer6")== -1) && 
               (requester.indexOf("Firefox3")== -1) && 
               (requester.indexOf("Firefox2")== -1) && 
               (requester.indexOf("Firefox1.5") == -1) &&
               (requester.indexOf("Safari4") == -1) &&
               (navigator.userAgent.toString().indexOf("Chrome/") == -1)
           )
               { 
               // browser incompatible
               //var d  = YAHOO.util.Dom.get('browsermsg');
               //YAHOO.util.Dom.setStyle(d, 'display', 'block');
               //return;
            }



         try {

            tabView = new YAHOO.widget.TabView();
            TSCM.ratings.Screener.tabview = tabView;
            TSCM.ratings.Screener.tabview.addListener('activeTabChange', TSCM.ratings.Screener.tabchange);
            //TSCM.ratings.Screener.tabview.addListener('activeChange', handler);
            //tabView.addListener('click', handler);


            // this is for tabview 
            YAHOO.util.Event.onContentReady('financial-screener', function() {
                  var modules = YAHOO.util.Dom.getElementsByClassName('mod', 'div', this);

                  YAHOO.util.Dom.batch(modules, function(module) {
                     var tab = null;
                     var label = module.getElementsByTagName('h3')[0].innerHTML;
                     var content = YAHOO.util.Dom.getElementsByClassName('bd','div', module)[0];
                     tab =  new YAHOO.widget.Tab( { label: label, contentEl: content } );
                     all_tabs[label] = tab;
                     tabView.addTab( tab);
                     YAHOO.util.Dom.setStyle(module, 'display', 'none'); // hide modules 
                     }); // end batch 

                  var tabnum = TSCM.util.getParameter("tab");
                  if(TSCM.util.isDefined(tabnum)){
                     TSCM.config.Config.active_tab=tabnum;
                  }


                  tabView.set('activeIndex', TSCM.config.Config.active_tab); // make first tab active
                  tabView.appendTo(this); // append to financial screener
                  /*var dd1 = new YAHOO.util.DDProxy("financial-screener"); 
                    var dd2 = new YAHOO.util.DDProxy("results_ct"); 
                    var dd3 = new YAHOO.util.DDProxy("company_ct"); 
                   */
                  
                  //TSCM.ratings.Ratings.handleRelatedStories();
                  TSCM.ratings.Ratings.loadLatestStories("TSCM.ratings.Ratings.handleLatestStories");






            //var symbol_lookup = new YAHOO.widget.Module('symbol_lookup'); 
            //symbol_lookup.show();


            // putting this here because border shows up in ie before chart renders
            var im = YAHOO.util.Dom.get('chartimg');
            YAHOO.util.Dom.setStyle(im, 'display', 'block');  
            im = YAHOO.util.Dom.get('prefs-ct');
            YAHOO.util.Dom.setStyle(im, 'display', 'block');  


            //show the modules -- no flicker
            TSCM.ratings.Screener.showmodules();


            //setup Modules and attach closebox events 

            var parent = 'criteria_equities';
            TSCM.ratings.Screener.initCriteriaModules(parent);
            parent = 'criteria_etfs';
            TSCM.ratings.Screener.initCriteriaModules(parent);
            parent = 'criteria_funds';
            TSCM.ratings.Screener.initCriteriaModules(parent);


            // 
            /*
            var headers = YAHOO.util.Dom.getElementsByClassName('scr_form_label', 'span');
            for (var i=0;i<headers.length;i++){
               YAHOO.util.Event.addListener(headers[i], "mousedown", function(){return false;}); 
               YAHOO.util.Event.addListener(headers[i], "selectstart", function(){return false;}); 
            }
            */

            // three input boxes for ticker symbol criteria. 
            var boxes = [];
            boxes.push(YAHOO.util.Dom.get("equity_ticker"));
            boxes.push(YAHOO.util.Dom.get("etf_ticker"));
            boxes.push(YAHOO.util.Dom.get("fund_ticker"));

            // bind key listener for ticker symbol box
            YAHOO.util.Dom.batch(boxes, function(box) { 
               YAHOO.util.Event.addListener(box, "keyup", function(e){ 
                     this.value = this.value.toUpperCase();
                     if(e.keyCode==13){ TSCM.ratings.Screener.search(); }
                     }); 
            });


            var dialogtxt = "<b>Select your export options:</b><p>";
             dialogtxt += "Number of results to export: (max 500) <select id='nprint_prefs'><option value='100'>100</option><option value='250'>250</option><option value='500'>500</option></select>";
            dialogtxt += "<br>";
            //dialogtxt += "Export as: <select id='printtype'><option selected value='table'>HTML table for printing</option><option value='csv'>Comma separated values</option></select>";
            TSCM.ratings.Screener.printdialog =  new YAHOO.widget.SimpleDialog("print",  
                  { width: "370px", fixedcenter: true, 
                    visible: false, draggable: true, 
                    close: true, text: dialogtxt, 
                    /*icon: YAHOO.widget.SimpleDialog.ICON_HELP,  */
                    buttons: [ { text:"Cancel",handler:function(){this.hide();}},{ text:"OK", handler:function () { 
                       TSCM.ratings.Screener.doprint();
                       this.hide(); 
                       } , isDefault:true } ] ,
                       modal:false,
                    effect:[{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.1 },  
                            {effect:YAHOO.widget.ContainerEffect.FADE,duration:0.2 }],
                    constraintoviewport: true  
                  } ); 
              TSCM.ratings.Screener.printdialog.setHeader("Print result list");
              TSCM.ratings.Screener.printdialog.render(document.body);


               var debuggr = TSCM.util.getParameter("debug");
               if(TSCM.util.isDefined(debuggr)){
                  var d = YAHOO.util.Dom.get('debug');
                  YAHOO.util.Dom.setStyle(d,"display", "block");
               }



            }); // end tabview stuff and loading selects


            YAHOO.util.Event.onContentReady('industries_data', function() {
                  TSCM.ratings.Screener.populateIndustries();
                  });

            YAHOO.util.Event.onContentReady('etf_fundfamily_data', function() {
                  TSCM.ratings.Screener.populateSelect('etf_fund_family',ETFFundFamilyList);
                  });

            YAHOO.util.Event.onContentReady('etf_fundobj_data', function() {
                  TSCM.ratings.Screener.populateSelect('etf_fund_objective',ETFFundObjList);
                  });

            YAHOO.util.Event.onContentReady('fund_fundfamily_data', function() {
                  TSCM.ratings.Screener.populateSelect('fund_fund_family',FundFamilyList);
                  });

            YAHOO.util.Event.onContentReady('fund_fundobj_data', function() {
                  TSCM.ratings.Screener.populateSelect('fund_fund_objective',FundObjList);
                  });



            // initialize the help dialogs 
            TSCM.ratings.Help.init();

            // reporting 
            var repObj = new Object(); 
            repObj["pageName"]="Screener";
            repObj["channel"]="universal"; 
            repObj["contentCat"]="universal|tools|screener";
            repObj["contentType"]="Screener";
            repObj["channel"]="universal"; 
            repObj["hier1"]=repObj.pageName;
            TSC.reporting.config(repObj);      
            //TSC.reporting.makeCall();
            var pi = repObj.pageName;
            var cg = repObj.contentCat;
            //cmCreatePageviewTag(pi, cg,null, null, null, null, null, null, null,null, null, null, null, null, null, null, null, null, null,"ignore");
            // end reporting 

         }catch(e){
            window.status = e.message;
         }

         // display the screener
         setTimeout(function(){
            var d = YAHOO.util.Dom.get('splash');
            YAHOO.util.Dom.setStyle(d,"display", "none");
            //TSCM.ratings.Screener.search();
         },500);

         this.inited = true;

         YAHOO.util.Dom.setStyle("screener_intro", 'display', 'none'); // hide intro


   }  //init 


}; // end prototype

TSCM.ratings.Screener.initCriteriaModules=function(parent){
   var closeboxes = YAHOO.util.Dom.getElementsByClassName('closebox', 'div',parent);
         for (var i=0;i<closeboxes.length;i++){
               var id = closeboxes[i].parentNode.parentNode.id;
               var criteriatype = closeboxes[i].parentNode.parentNode.parentNode.id;
               var closebox = closeboxes[i];
               YAHOO.util.Dom.setStyle(closebox,"left", "294px");


               var mod = new YAHOO.widget.Module(id); 
               mod.container = closeboxes[i].parentNode.parentNode.parentNode.id;
               mod.myhide = function(){
                  this.enabled=false;
                  this.hide();

                  // set up options for criteria popup 
                  var d = YAHOO.util.Dom.get(this.container + "_opts");
                  d.options[0] = new Option('- choose one -','any',false);
                  if(typeof d == "undefined"){
                    // window.location.reload();
                  }

                  d.removeAttribute("disabled");


                  var p = YAHOO.util.Dom.get(this.id);

                  var label = "";

                  // read label from div 
                  var thespan = YAHOO.util.Dom.getElementsByClassName('scr_form_label','span', p)[0];
                  label = thespan.innerHTML;

                  var opt = new Option(label,this.id,false);
                  d.options[d.options.length] = opt;

                  d.options.selectedIndex = 0;
                  
                  // shows the popup box.
                  YAHOO.util.Dom.setStyle(d.parentNode, 'display', 'block'); 

                 if(TSCM.ratings.Screener.inited == true){
                     //TSCM.ratings.Screener.search();
                 }

               } // myhide

               mod.myshow = function(){
                  this.enabled=true;
                  this.show();
               }


               var mods = TSCM.config.Config.mods;
               mods[id] = mod; // these are criteria mods


               // attach closebox events
               closeboxes[i].id = id + "-cb";
               YAHOO.util.Event.addListener(closeboxes[i].id, "click", mod.myhide, mod, true); 

               mod.enabled = true;
               /*
               if(parent == 'criteria_equities'){
                  if(i>4) mod.myhide();
               }else{
                  if(i>8) mod.myhide();
               }
               */


         } // closeboxes

         try { // disable the popup boxes if nothing there. 
            var boxes = [];
            boxes.push(YAHOO.util.Dom.get("criteria_funds_opts"));
            boxes.push(YAHOO.util.Dom.get("criteria_etfs_opts"));
            boxes.push(YAHOO.util.Dom.get("criteria_equities_opts"));
                  YAHOO.util.Dom.batch(boxes, function(box) {
                     if(box.options.length == 0){
                        // hide it if there's nada
                        YAHOO.util.Dom.setStyle(box.parentNode, 'display', 'none'); 
                        box.setAttribute("disabled","disabled");
                     }
                  });
          } catch(e){}


}


TSCM.ratings.Screener.populateSelect=function(sel,arr,any_label,dont_include_any){

   var include_any = true;
   var k;
   if(typeof dont_include_any != "undefined"){
      include_any = false;
   }

   var d = YAHOO.util.Dom.get(sel);
   var selected;
   try{
   selected = d.options[d.options.selectedIndex].value;
   }catch(e){
      // must not have been loaded or something
      }
   try{
      d.options.length = 0;
      var label = (any_label == undefined )  ? "any" : any_label;
   
      if(include_any){
         d.options[0] = new Option(label,'any',false);
      k=1;
      }else{
         k = 0;
      }

      //alert(e.message + " " + sel + " " + arr);

   for (var i=0;i<arr.length;i++){
      var item = arr[i];
      var n = item.replace('_',' ');
      item = item.replace("&amp;","&") ;
      d.options[k] = new Option(n,item,false);
      k++;
   }

   d.options[0].selected = true;

   }catch(e){

   }

} 



TSCM.ratings.Screener.populateIndustries=function(){

   var d = YAHOO.util.Dom.get("sector");
   var selected;
   try{
   selected = d.options[d.options.selectedIndex].value;
   }catch(e){
      // must not have been loaded or something
      }
      try {
   d.options.length = 0;
   d.options[0] = new Option('any','any',false);
   d.options[0].selected = true;
   k=1;
   var ind = TSCM.config.Config.industries;

   for (var i in ind){
      var n = i.replace('_',' ');
      d.options[k] = new Option(n,i,false);
      k++;
   }
      }catch(e){}
} 



TSCM.ratings.Screener.populateSubIndustries=function(){
   var d = YAHOO.util.Dom.get("sector");
   var selected = d.options[d.options.selectedIndex].value;
   var e = YAHOO.util.Dom.get("subindustry");
   if(selected != "any"){
      k=0;
      e.options.length = 0;
      e.options[k] = new Option('any','any',false);
      k++;
      var ind = TSCM.config.Config.industries;
      for (var i in ind){
         var theind = ind[i];
         for (var j=0;j<theind.length;j++){
            if(i==selected){
               e.options[k] = new Option(theind[j],theind[j],false);
               k++;
            }
         }
            e.options.selectedIndex = 0;
      }
   }

   TSCM.ratings.Screener.search();
}



TSCM.ratings.Screener.first = function(){
   var thisquery = this.last_query;
   TSCM.config.Config.start = 0;
   thisquery.execute();
}

TSCM.ratings.Screener.next = function(){
   var thisquery = this.last_query;
   var num_results = TSCM.ratings.Screener.getSelectValue("prefs_numrecs");
   TSCM.config.Config.start += Math.abs(TSCM.ratings.Screener.getSelectValue("prefs_numrecs"));
   thisquery.execute();
}

TSCM.ratings.Screener.prev = function(){
   var thisquery = this.last_query;
   var num_results = TSCM.ratings.Screener.getSelectValue("prefs_numrecs");
   TSCM.config.Config.start -= TSCM.ratings.Screener.getSelectValue("prefs_numrecs");
   if ( TSCM.config.Config.start < 0 ) TSCM.config.Config.start = 0;
   thisquery.execute();
}

TSCM.ratings.Screener.last = function(numfound){
   var thisquery = this.last_query;
    var displaynum = TSCM.ratings.Screener.getSelectValue("prefs_numrecs");
   TSCM.config.Config.start = (numfound - displaynum)-1;
   thisquery.execute();
}


TSCM.ratings.Screener.addCriteria = function(){
}

var tabView;
var all_tabs = {};
var active_tab;



TSCM.ratings.Screener.tabchange = function(e){

   var D = YAHOO.util.Dom;
   try {
      var o = e.newValue; // this would almost be a tab
      //active_tab =  o.get('element').firstChild.firstChild.innerHTML;
      active_tab =  o.get('element').firstChild.firstChild.firstChild.id;
      if(active_tab == "tab0"){
         var im = D.get(active_tab);
         //im.src = "/tsc/ratings/img/stocks-over.gif";
         TSCM.config.Config.recordtype = "equity";
         active_tab = "Stocks";
      }else if(active_tab == "tab1"){
         var im = D.get(active_tab);
         //im.src = "/tsc/ratings/img/etfs-over.gif";
         TSCM.config.Config.recordtype = "etf";
         active_tab = "ETFs";
      }else if(active_tab == "tab2"){
	  	 var im = D.get(active_tab);
         TSCM.config.Config.recordtype = "fund";
         //im.src = "/tsc/ratings/img/funds-over.gif";
         active_tab = "Funds";
      } else if(active_tab == "tab3"){
         var im = D.get(active_tab);
         TSCM.config.Config.recordtype = "BKSL";
         //im.src = "/tsc/ratings/img/banks-over.gif";
         active_tab = "Banks and Thrifts";
      }else if(active_tab == "tab4"){
         TSCM.config.Config.recordtype = "PCLH";
         var im = D.get(active_tab);
         //im.src = "/tsc/ratings/img/insurers-over.gif";
         active_tab = "Insurers and HMOs";
      }
      TSCM.config.Config.active_tab = active_tab;

	  TSC.reporting.sendLinkEvent('screener|stocks|tab|' + active_tab);
        
      //active_tab =  o.get('element').firstChild.firstChild.innerHTML;

      // omniture custom link event
       var pagename ="Screener - " + active_tab;

         var repObj = new Object(); 
         repObj["pageName"]=pagename;
         repObj["channel"]="universal";
         repObj["contentCat"]="universal|tools|screener";
         repObj["contentType"]="Screener";
         repObj["hier1"]=pagename;
        // TSC.reporting.config(repObj);      
        // TSC.reporting.makeCall();
         var pi = repObj.pageName;
         var cg = repObj.contentCat;
  //       TSC.reporting.makeCall(repObj);

         //TSC.reporting.sendLinkEvent(pagename);

       
       if(TSCM.config.Config.inited == true){
          TSCM.ratings.Screener.search();
          //TSCM.ratings.Ratings.loadLatestStories("TSCM.ratings.Ratings.handleLatestStories");
       }
   }catch(e){
      }
};


var _searchtimer = false;

TSCM.ratings.Screener.search = function(param){

   TSCM.config.Config.start = 0;

   if(_searchtimer){
      return;
   }else{
      _searchtimer = true;
      setTimeout('_searchtimer=false',200);
   }

   var txt = "<img align=left style='margin-top:-0px;padding-right:5px;' src='img/loading2.gif'> Searching...";
   YAHOO.util.Dom.get('results_header').innerHTML = txt;
   var rh = YAHOO.util.Dom.get('results_header');
   YAHOO.util.Dom.setStyle(rh, 'background', '#fff'); 

   TSCM.config.Config.timer = setTimeout(function(){
         TSCM.ratings.Screener.handleFailure();
   },(20 * 1000)); 

   TSCM.config.Config.timer2 = setTimeout("TSCM.ratings.Screener.dosearch('" + param + "')",100);
}


TSCM.ratings.Screener.dosearch = function(param){
      
   // sometimes this desn't display first time through.
   var res = YAHOO.util.Dom.get("results_ct");
   YAHOO.util.Dom.setStyle(res, 'display', 'block'); 
   var foo = new TSCM.ratings.Query(param);
   this.last_query = foo;
   document.lastquery = foo;
   return;
}



TSCM.ratings.Screener.handleFailure = function(){
   var txt = "<span class='errortxt'>There was an error retrieving your results. <a href='javascript:TSCM.ratings.Screener.search();'>retry</a></span>";

   var parent = YAHOO.util.Dom.get("results_list");
   if(parent.hasChildNodes() != true){
      YAHOO.util.Dom.get('results_header').innerHTML = txt;
   }
}


TSCM.ratings.Screener.getTextInputValue = function(name){
   var value= "";

   try {
      var d = YAHOO.util.Dom.get(name);
      try {
         var mod = eval("TSCM.config.Config.mods." + d.parentNode.parentNode.id);
         if(typeof mod != "undefined"){
            if(mod.enabled != true){
               return value;
            }
         }
      }catch(e){
         debug("error getting select value " + selectname);
      }
      value = d.value;
      return value;
   }catch(e){
      debug("error: " + e.message + " for " + selectname);
      value = "";
      return value;
   }



}



TSCM.ratings.Screener.getSelectValue = function(selectname){
   var value=-1;
   try {
      var d = YAHOO.util.Dom.get(selectname);
      try {
         if(selectname.indexOf("prefs") == -1){
            var mod = eval("TSCM.config.Config.mods." + d.parentNode.parentNode.id);
            if(typeof mod != "undefined"){
               if(mod.enabled != true){
                  value="any";
                  return value;
               }
            }
         }
      }catch(e){
         debug("error getting select value " + selectname);
      }
      value = d.options[d.options.selectedIndex].value;
      return value;
   }catch(e){
      debug("error: " + e.message + " for " + selectname);
      value = "any";
      return value;
   }


}


TSCM.ratings.Screener.handleServerError = function(ob){
   // error 


}





TSCM.ratings.Query = function(param){
   //var S = TSCM.ratings.Screener;

   // this should be in a lookup otuside of this
   var num_results = TSCM.ratings.Screener.getSelectValue("prefs_numrecs");
   var searchQuery = "";

   var d;
   var selected;
   if(TSCM.config.Config.active_tab == "Stocks"){
      //searchQuery = "type:equity NOT ticker:GBTR"; // gbtr is not rated. 
      searchQuery = "type:equity "; // gbtr is not rated. 


      selected = TSCM.ratings.Screener.getTextInputValue('equity_ticker');

      if(selected != ""){
         selected = selected.trim().toUpperCase();
         selected = TSCM.util.rmnonAlpha(selected);
         if(selected != ""){
            searchQuery += " AND ticker:" + selected + "* " ;
         }
      }


/*
      selected = TSCM.ratings.Screener.getSelectValue("tsc_rating2");

      if(selected == "any"){
      }else{
         searchQuery += " AND LetterGradeRating:[ A TO " + selected + "?" + "]";
      }
      */


      /** one box for rating and rec */
      this.rec = TSCM.ratings.Screener.getSelectValue("tsc_rec");

      if(param == 'tsc_rec'){
         this.fixRecsRatingsOpts(this.rec,'tsc_rating3');
      }

      var rating = TSCM.ratings.Screener.getSelectValue("tsc_rating3");
      var opt = TSCM.ratings.Screener.getSelectValue("tsc_rating_opts2");
      if(rating == "any"){
         if(this.rec == "any"){
            var d = YAHOO.util.Dom.get("tsc_rating_opts2");
            d.selectedIndex = 0;
         } else {

            if(opt == "any"){
                  searchQuery += " AND CurrentRating: " + this.rec;
            } else if(opt == "only"){
                  searchQuery += " AND CurrentRating: " + this.rec;
            } else if (opt == "hi"){
               if(this.rec == "Buy"){
                  searchQuery += " AND LetterGradeRating:[ A TO B ]" ;
               } else if (this.rec == "Hold"){
                  searchQuery += " AND LetterGradeRating:[ A TO C ]" ;
               } else if (this.rec == "Sell"){
                  searchQuery += " AND LetterGradeRating:[ A TO F ]" ;
               }
            } else if (opt == "lo"){
               if(this.rec == "Buy"){
                  searchQuery += " AND LetterGradeRating:[ A TO F ]" ;
               } else if (this.rec == "Hold"){
                  searchQuery += " AND LetterGradeRating:[ C TO F ]" ;
               } else if (this.rec == "Sell"){
                  searchQuery += " AND LetterGradeRating:[ F TO F ]" ;
               }
            }
         }

      }else{
         // options -- higher / lower / all 
         rating = rating.replace(" rated","");

         if(opt == "any"){
            searchQuery += " AND LetterGradeRating:[ " + rating + " TO " + rating + "?" + "]";
         } else if(opt == "only"){
            searchQuery += " AND LetterGradeRating:[ " + rating + " TO " + rating + "?" + "]";
         } else if (opt == "hi"){
            searchQuery += " AND LetterGradeRating:[ A TO " + rating + "?" + "]";
         } else if (opt == "lo"){
            searchQuery += " AND LetterGradeRating:[ " + rating + " TO F? ]";
         }
      }



      /* separate box 
      selected = TSCM.ratings.Screener.getSelectValue("tsc_rating2");
      var opt = TSCM.ratings.Screener.getSelectValue("tsc_rating_opts");
      if(selected == "any"){
         var d = YAHOO.util.Dom.get("tsc_rating_opts");
         d.selectedIndex = 0;
      }else{
         if(opt == "any"){
            searchQuery += " AND LetterGradeRating:[ " + selected + " TO " + selected + "?" + "]";
         } else if(opt == "only"){
            searchQuery += " AND LetterGradeRating:[ " + selected + " TO " + selected + "?" + "]";
         } else if (opt == "hi"){
            searchQuery += " AND LetterGradeRating:[ A TO " + selected + "?" + "]";
         } else if (opt == "lo"){
            searchQuery += " AND LetterGradeRating:[ " + selected + " TO F? ]";
         }
      }
      */




      this.marketcap =  TSCM.ratings.Screener.getSelectValue("marketcap");
      if(this.marketcap == "any"){
      }else{
         if(this.marketcap == "large"){
           searchQuery += " AND MarketCapitalization:[ " + tosci(5000000000,9) + " TO "  + tosci(10000000000000000,9) + " ]";
         } else if (this.marketcap == "mid"){
           searchQuery += " AND MarketCapitalization:[ " + tosci(1000000000,9) + " TO " + tosci(5000000000,9) + " ]";
         } else if (this.marketcap == "small"){
           //searchQuery += " AND MarketCapitalization:[ " + tosci(99999999,8) + " TO  " + tosci(1000000000,8 )  + " ]";
           searchQuery += " AND MarketCapitalization:[ 0.0 TO " + tosci(1000000000,9 )  + " ]";
         } else if (this.marketcap == "micro"){
           searchQuery += " AND MarketCapitalization:[ 0.0 TO " + tosci(100000000,8) + " ]";
         }
      }


      this.sector = TSCM.ratings.Screener.getSelectValue("sector");
      if(this.sector == "any"){
      }else{
         this.sector = this.sector.replace('&','*');
         this.sector = this.sector.replace('_',' ');
         searchQuery += " AND sector:\"" + this.sector + "\"";
      }

      this.subin = TSCM.ratings.Screener.getSelectValue("subindustry");

      if(this.subin == "any"){
      }else{
         if(this.subin.toLowerCase().indexOf("apparel")!= -1){
            this.subin = "Apparel*";
            searchQuery += " AND sub_industry:" + this.subin + "";
         }else{
            searchQuery += " AND sub_industry:\"" + this.subin + "\"";
         }
      }


      this.beta = TSCM.ratings.Screener.getSelectValue("beta");

      if(this.beta == "any"){
      }else{
         if(this.beta == -1){
            searchQuery += " AND Beta:[-3000 TO -0.00001 ]";
         }
         if(this.beta == 0){
            searchQuery += " AND Beta:[0 TO 0.99 ]";
         }
         if(this.beta == 1){
            searchQuery += " AND Beta:1";
         }
         if(this.beta > 1){
            searchQuery += " AND Beta:[1.01 TO 3000 ]" ;
         }

      }


      this.exch = TSCM.ratings.Screener.getSelectValue("exchange");
      if(this.exch == "any"){
      }else{
         this.exch = this.exch.replace('_',' ');
         searchQuery += " AND exchange:" + this.exch + "";
      }


   }else if(TSCM.config.Config.active_tab == "ETFs"){

      searchQuery = "type:etf";

      selected = TSCM.ratings.Screener.getTextInputValue('etf_ticker');
      if(selected != ""){
         selected = selected.trim().toUpperCase();
         selected = TSCM.util.rmnonAlpha(selected);
         if(selected != ""){
         searchQuery += " AND ticker:" + selected + "* " ;
         }
      }


      var selected = TSCM.ratings.Screener.getSelectValue("etf_fund_family");
      var d = YAHOO.util.Dom.get("etf_fund_family");
      var selected =  d.value;
      if(selected != "any"){
         if(selected.indexOf("PowerShares")!= -1){
            searchQuery += " AND FundFamily:PowerShares ";
         }else{
            searchQuery += " AND FundFamily:\"" + selected + "\"";
         }
      }

      selected = TSCM.ratings.Screener.getSelectValue("etf_fund_objective");
      if(selected != "any"){
         searchQuery += " AND FundObjective:\"" + selected + "\"";
      }else{ }

      /*
      selected = TSCM.ratings.Screener.getSelectValue("etf_inv_rating");
      var opt = TSCM.ratings.Screener.getSelectValue("etf_inv_rating_opts");
      if(selected == "any"){

         var d = YAHOO.util.Dom.get("etf_inv_rating_opts");
         d.selectedIndex = 0;

      }else{
         if(opt == "any"){
            searchQuery += " AND InvestmentRating:[ " + selected + " TO " + selected + "?" + "]";
         } else if(opt == "only"){
            searchQuery += " AND InvestmentRating:[ " + selected + " TO " + selected + "?" + "]";
         } else if (opt == "hi"){
            searchQuery += " AND InvestmentRating:[ A TO " + selected + "?" + "]";
         } else if (opt == "lo"){
            searchQuery += " AND InvestmentRating:[ " + selected + " TO F? ]";
         }
      }
      */

      /** one box for rating and rec */
      this.rec = TSCM.ratings.Screener.getSelectValue("etf_rec");

      if(param == 'etf_rec'){
         this.fixRecsRatingsOpts(this.rec,'etf_inv_rating');
      }

      var rating = TSCM.ratings.Screener.getSelectValue("etf_inv_rating");
      var opt = TSCM.ratings.Screener.getSelectValue("etf_inv_rating_opts");
      if(rating == "any"){
         if(this.rec == "any"){
            var d = YAHOO.util.Dom.get("etf_inv_rating_opts");
            d.selectedIndex = 0;
         } else {

            if(opt == "any"){
                  searchQuery += " AND recommendation: " + this.rec.toUpperCase();
            } else if(opt == "only"){
                  searchQuery += " AND recommendation: " + this.rec.toUpperCase();

            } else if (opt == "hi"){
               if(this.rec == "Buy"){
                  searchQuery += " AND InvestmentRating:[ A TO B ]" ;
               } else if (this.rec == "Hold"){
                  searchQuery += " AND InvestmentRating:[ A TO C ]" ;
               } else if (this.rec == "Sell"){
                  searchQuery += " AND InvestmentRating:[ A TO F ]" ;
               }
            } else if (opt == "lo"){
               if(this.rec == "Buy"){
                  searchQuery += " AND InvestmentRating:[ A TO F ]" ;
               } else if (this.rec == "Hold"){
                  searchQuery += " AND InvestmentRating:[ C TO F ]" ;
               } else if (this.rec == "Sell"){
                  searchQuery += " AND InvestmentRating:[ F TO F ]" ;
               }
            }
         }

      }else{
         // options -- higher / lower / all 
         rating = rating.replace(" rated","");

         if(opt == "any"){
            searchQuery += " AND InvestmentRating:[ " + rating + " TO " + rating + "?" + "]";
         } else if(opt == "only"){
            searchQuery += " AND InvestmentRating:[ " + rating + " TO " + rating + "?" + "]";
         } else if (opt == "hi"){
            searchQuery += " AND InvestmentRating:[ A TO " + rating + "?" + "]";
         } else if (opt == "lo"){
            searchQuery += " AND InvestmentRating:[ " + rating + " TO F? ]";
         }
      }


      /*
      selected = TSCM.ratings.Screener.getSelectValue("etf_rec");
      if(selected == "any"){
      }else{
         searchQuery += " AND recommendation:\"" + selected + "\"";
      }
      */

      var timeframe = TSCM.ratings.Screener.getSelectValue("etf_perf_timeframe");

      selected = TSCM.ratings.Screener.getSelectValue("etf_perf_percent");
      if(timeframe != "any"){
         if(selected != "any"){
            if(selected.indexOf("+") != -1){
               searchQuery += " AND " + timeframe + ":[50 TO 99999]";
            } else if(selected == "below"){
               searchQuery += " AND " + timeframe + ":[-100000 TO -0.0001]";
            } else {
               var arr = selected.split("-");
               var lo = arr[0];
               var hi = arr[1];
               searchQuery += " AND " + timeframe + ":[" + lo + " TO " + hi + "]";
            }
         }
      }


      selected = TSCM.ratings.Screener.getSelectValue("etf_exp_rat_operator");
      if(selected == "any"){
      }else{
         var val = TSCM.ratings.Screener.getSelectValue("etf_exp_rat_value");

         if(selected == "lt"){
            searchQuery += " AND ReturnExpenseExpenseRatio:[-100 TO " + val + "]"; 
         }else  if(selected == "gt"){
            searchQuery += " AND ReturnExpenseExpenseRatio:[" + val + " TO 99999]"; 
         }else  if(selected == "eq"){
            searchQuery += " AND ReturnExpenseExpenseRatio:" + val + ""; 
         }
      }

      selected = TSCM.ratings.Screener.getSelectValue("etf_netassets_operator");
      if(selected == "any"){
      }else{
         var val = TSCM.ratings.Screener.getSelectValue("etf_netassets");

         if(selected == "lt"){
            searchQuery += " AND NetAssets:[00 TO " + val + "]"; 
         }else  if(selected == "gt"){
            searchQuery += " AND NetAssets:[" + val + " TO 99999]"; 
         }else  if(selected == "eq"){
            searchQuery += " AND NetAssets:" + val + ""; 
         }
      }


      selected = TSCM.ratings.Screener.getSelectValue("etf_risk");
      if(selected == "any"){
      }else{
            searchQuery += " AND Risk:[ A TO " + selected + "?" + "]";
      }


   }else if(TSCM.config.Config.active_tab == "Funds"){

      searchQuery = "type:fund";

      selected = TSCM.ratings.Screener.getTextInputValue('fund_ticker');

      if(selected != ""){
         selected = selected.trim().toUpperCase();
         selected = TSCM.util.rmnonAlpha(selected);
         if(selected != ""){
         searchQuery += " AND ticker:" + selected + "* " ;
         }
      }


      var selected = TSCM.ratings.Screener.getSelectValue("fund_fund_family");
      if(selected != "any"){
         searchQuery += " AND FundFamily:\"" + selected + "\"";
      }

      selected = TSCM.ratings.Screener.getSelectValue("fund_fund_objective");
      if(selected != "any"){
         searchQuery += " AND FundObjective:\"" + selected + "\"";
      }else{ }

      /** one box for rating and rec */
      this.rec = TSCM.ratings.Screener.getSelectValue("fund_rec");

      if(param == 'fund_rec'){
         this.fixRecsRatingsOpts(this.rec,'fund_inv_rating');
      }

      var rating = TSCM.ratings.Screener.getSelectValue("fund_inv_rating");
      var opt = TSCM.ratings.Screener.getSelectValue("fund_inv_rating_opts");
      if(rating == "any"){
         if(this.rec == "any"){
            var d = YAHOO.util.Dom.get("fund_inv_rating_opts");
            d.selectedIndex = 0;
         } else {

            if(opt == "any"){
                  searchQuery += " AND recommendation: " + this.rec.toUpperCase();
            } else if(opt == "only"){
                  searchQuery += " AND recommendation: " + this.rec.toUpperCase();

            } else if (opt == "hi"){
               if(this.rec == "Buy"){
                  searchQuery += " AND InvestmentRating:[ A TO B ]" ;
               } else if (this.rec == "Hold"){
                  searchQuery += " AND InvestmentRating:[ A TO C ]" ;
               } else if (this.rec == "Sell"){
                  searchQuery += " AND InvestmentRating:[ A TO F ]" ;
               }
            } else if (opt == "lo"){
               if(this.rec == "Buy"){
                  searchQuery += " AND InvestmentRating:[ A TO F ]" ;
               } else if (this.rec == "Hold"){
                  searchQuery += " AND InvestmentRating:[ C TO F ]" ;
               } else if (this.rec == "Sell"){
                  searchQuery += " AND InvestmentRating:[ F TO F ]" ;
               }
            }
         }

      }else{
         // options -- higher / lower / all 
         rating = rating.replace(" rated","");

         if(opt == "any"){
            searchQuery += " AND InvestmentRating:[ " + rating + " TO " + rating + "?" + "]";
         } else if(opt == "only"){
            searchQuery += " AND InvestmentRating:[ " + rating + " TO " + rating + "?" + "]";
         } else if (opt == "hi"){
            searchQuery += " AND InvestmentRating:[ A TO " + rating + "?" + "]";
         } else if (opt == "lo"){
            searchQuery += " AND InvestmentRating:[ " + rating + " TO F? ]";
         }
      }



      /*

      selected = TSCM.ratings.Screener.getSelectValue("fund_inv_rating");
      var opt  = TSCM.ratings.Screener.getSelectValue("fund_inv_rating_opts");
      if(selected == "any"){

         var d = YAHOO.util.Dom.get("fund_inv_rating_opts");
         d.selectedIndex = 0;

      }else{
         if(opt == "any"){
            searchQuery += " AND InvestmentRating:[ " + selected + " TO " + selected + "?" + "]";
         } else if(opt == "only"){
            searchQuery += " AND InvestmentRating:[ " + selected + " TO " + selected + "?" + "]";
         } else if (opt == "hi"){
            searchQuery += " AND InvestmentRating:[ A TO " + selected + "?" + "]";
         } else if (opt == "lo"){
            searchQuery += " AND InvestmentRating:[ " + selected + " TO F? ]";
         }
      }

      selected = TSCM.ratings.Screener.getSelectValue("fund_rec");
      if(selected != "any"){
         searchQuery += " AND recommendation:\"" + selected + "\"";
      }
      */


      var timeframe = TSCM.ratings.Screener.getSelectValue("fund_perf_timeframe");

      selected = TSCM.ratings.Screener.getSelectValue("fund_perf_percent");
      if(timeframe != "any"){
         if(selected != "any"){
            if(selected.indexOf("+") != -1){
               searchQuery += " AND " + timeframe + ":[50 TO 99999]";
            } else if(selected == "below"){
               searchQuery += " AND " + timeframe + ":[-100000 TO -0.0001]";
            } else {
               var arr = selected.split("-");
               var lo = arr[0];
               var hi = arr[1];
               searchQuery += " AND " + timeframe + ":[" + lo + " TO " + hi + "]";
            }
         }
      }


      selected = TSCM.ratings.Screener.getSelectValue("fund_exp_rat_operator");
      if(selected != "any"){

         var val = TSCM.ratings.Screener.getSelectValue("fund_exp_rat_value");
         if(selected == "lt"){
            searchQuery += " AND ReturnExpenseExpenseRatio:[-100 TO " + val + "]"; 
         }else  if(selected == "gt"){
            searchQuery += " AND ReturnExpenseExpenseRatio:[" + val + " TO 99999]"; 
         }else  if(selected == "eq"){
            searchQuery += " AND ReturnExpenseExpenseRatio:" + val + ""; 
         }
      }

      selected = TSCM.ratings.Screener.getSelectValue("fund_loadstatus");
      if(selected != "any"){
         searchQuery += " AND LoadStatus:\"" + selected + "\""; 
      }

/*
      selected = TSCM.ratings.Screener.getSelectValue("fund_starrating");
      if(selected != "any"){
            searchQuery += " AND starrating:" + selected ; 
      }
      */


      selected = TSCM.ratings.Screener.getSelectValue("fund_netassets_operator");
      if(selected == "any"){
      }else{
         var val = TSCM.ratings.Screener.getSelectValue("fund_netassets");

         if(selected == "lt"){
            searchQuery += " AND NetAssets:[00 TO " + val + "]"; 
         }else  if(selected == "gt"){
            searchQuery += " AND NetAssets:[" + val + " TO 99999]"; 
         }else  if(selected == "eq"){
            searchQuery += " AND NetAssets:" + val + ""; 
         }
      }


      selected = TSCM.ratings.Screener.getSelectValue("fund_risk");
      if(selected == "any"){
      }else{
            searchQuery += " AND Risk:[ A TO " + selected + "?" + "]";
      }


   }else if(TSCM.config.Config.active_tab.indexOf("Banks")!=-1){
      selected = TSCM.ratings.Screener.getSelectValue("bk_comp_type");
      if(selected == "any"){
         //searchQuery += " type:[BK SL]";
         searchQuery += " ((type:BK) OR (type:SL))";
         TSCM.config.Config.recordtype = "BKSL";
      }else{
         TSCM.config.Config.recordtype = selected;
         searchQuery += " type:" + selected + "";
      }



      selected = TSCM.ratings.Screener.getSelectValue("bk_state");
      if(selected != "any"){
         searchQuery += " AND MgmtState:" + selected + "";
      }

      selected = TSCM.ratings.Screener.getTextInputValue('bank_ticker');

      if(selected != ""){
         selected = selected.trim().toUpperCase();
         //selected = TSCM.util.rmnonAlpha(selected);
         selected = selected.replace(/\*/,"");
         selected = selected.replace(/\ /,"*");
         selected = selected.replace(/\?/,"");
         if(selected != ""){
            searchQuery += " AND ticker:" + selected + "*" ;
         }
      }


      // the rating
      var rating = TSCM.ratings.Screener.getSelectValue("bank_rating");
      var opt = TSCM.ratings.Screener.getSelectValue("bank_rating_opts");


      /*

      this.rec = TSCM.ratings.Screener.getSelectValue("bank_rec");

      if(param == 'bank_rec'){
         this.fixRecsRatingsOpts(this.rec,'bank_rating');
      }
      */

      if(rating == "any"){
         if(this.rec == "any"){
            var d = YAHOO.util.Dom.get("bank_rating_opts");
            d.selectedIndex = 0;
         } else {

            if(opt == "any"){
                  //searchQuery += " AND recommendation: " + this.rec.toUpperCase();

                  if(this.rec == "Buy"){
                     searchQuery += " AND LetterGradeRating:[ A TO B ]" ;
                  } else if (this.rec == "Hold"){
                     searchQuery += " AND LetterGradeRating:[ C TO D ]" ;
                  } else if (this.rec == "Sell"){
                     searchQuery += " AND LetterGradeRating:[ F TO F ]" ;
                  }

            } else if(opt == "only"){
                  //searchQuery += " AND recommendation: " + this.rec.toUpperCase();
                  if(this.rec == "Buy"){
                     searchQuery += " AND LetterGradeRating:[ A TO B ]" ;
                  } else if (this.rec == "Hold"){
                     searchQuery += " AND LetterGradeRating:[ C TO D ]" ;
                  } else if (this.rec == "Sell"){
                     searchQuery += " AND LetterGradeRating:[ F TO F ]" ;
                  }
            } else if (opt == "hi"){
               if(this.rec == "Buy"){
                  searchQuery += " AND LetterGradeRating:[ A TO B ]" ;
               } else if (this.rec == "Hold"){
                  searchQuery += " AND LetterGradeRating:[ A TO C ]" ;
               } else if (this.rec == "Sell"){
                  searchQuery += " AND LetterGradeRating:[ A TO F ]" ;
               }
            } else if (opt == "lo"){
               if(this.rec == "Buy"){
                  searchQuery += " AND LetterGradeRating:[ A TO F ]" ;
               } else if (this.rec == "Hold"){
                  searchQuery += " AND LetterGradeRating:[ C TO F ]" ;
               } else if (this.rec == "Sell"){
                  searchQuery += " AND LetterGradeRating:[ F TO F ]" ;
               }
            }
         }

      }else{
         // options -- higher / lower / all 
         rating = rating.replace(" rated","");

         if(opt == "any"){
            searchQuery += " AND LetterGradeRating:[ " + rating + " TO " + rating + "?" + "]";
         } else if(opt == "only"){
            searchQuery += " AND LetterGradeRating:[ " + rating + " TO " + rating + "?" + "]";
         } else if (opt == "hi"){
            searchQuery += " AND LetterGradeRating:[ A TO " + rating + "?" + "]";
         } else if (opt == "lo"){
            searchQuery += " AND LetterGradeRating:[ " + rating + " TO F? ]";
         }
      }


   }else if(TSCM.config.Config.active_tab.indexOf("HMO")!=-1){
      selected = TSCM.ratings.Screener.getSelectValue("insurer_type");
      if(selected == "any"){
         searchQuery += " type: PC OR LH OR HM ";
         TSCM.config.Config.recordtype = "PCLH";
      }else{
         TSCM.config.Config.recordtype = selected;
         searchQuery += " type:" + selected + "";
      }


      selected = TSCM.ratings.Screener.getSelectValue("insurer_state");
      if(selected != "any"){
         searchQuery += " AND MgmtState:" + selected + "";
      }

      selected = TSCM.ratings.Screener.getTextInputValue('insurer_ticker');

      if(selected != ""){
         selected = selected.trim().toUpperCase();
         selected = TSCM.util.rmnonAlpha(selected);
         if(selected != ""){
            searchQuery += " AND issue_name:" + selected.toLowerCase() + "* " ;
         }
      }


      // the rating
      var rating = TSCM.ratings.Screener.getSelectValue("insurer_rating");
      var opt = TSCM.ratings.Screener.getSelectValue("insurer_rating_opts");

      this.rec = TSCM.ratings.Screener.getSelectValue("insurer_rec");

      /*
      if(param == 'bank_rec'){
         this.fixRecsRatingsOpts(this.rec,'insurer_rating');
      }
      */

      if(rating == "any"){
         if(this.rec == "any"){
            var d = YAHOO.util.Dom.get("insurer_rating_opts");
            d.selectedIndex = 0;
         } else {

            if(opt == "any"){
                  //searchQuery += " AND recommendation: " + this.rec.toUpperCase();

                  if(this.rec == "Buy"){
                     searchQuery += " AND LetterGradeRating:[ A TO B ]" ;
                  } else if (this.rec == "Hold"){
                     searchQuery += " AND LetterGradeRating:[ C TO D ]" ;
                  } else if (this.rec == "Sell"){
                     searchQuery += " AND LetterGradeRating:[ F TO F ]" ;
                  }

            } else if(opt == "only"){
                  //searchQuery += " AND recommendation: " + this.rec.toUpperCase();
                  if(this.rec == "Buy"){
                     searchQuery += " AND LetterGradeRating:[ A TO B ]" ;
                  } else if (this.rec == "Hold"){
                     searchQuery += " AND LetterGradeRating:[ C TO D ]" ;
                  } else if (this.rec == "Sell"){
                     searchQuery += " AND LetterGradeRating:[ F TO F ]" ;
                  }
            } else if (opt == "hi"){
               if(this.rec == "Buy"){
                  searchQuery += " AND LetterGradeRating:[ A TO B ]" ;
               } else if (this.rec == "Hold"){
                  searchQuery += " AND LetterGradeRating:[ A TO C ]" ;
               } else if (this.rec == "Sell"){
                  searchQuery += " AND LetterGradeRating:[ A TO F ]" ;
               }
            } else if (opt == "lo"){
               if(this.rec == "Buy"){
                  searchQuery += " AND LetterGradeRating:[ A TO F ]" ;
               } else if (this.rec == "Hold"){
                  searchQuery += " AND LetterGradeRating:[ C TO F ]" ;
               } else if (this.rec == "Sell"){
                  searchQuery += " AND LetterGradeRating:[ F TO F ]" ;
               }
            }
         }

      }else{
         // options -- higher / lower / all 
         rating = rating.replace(" rated","");

         if(opt == "any"){
            searchQuery += " AND LetterGradeRating:[ " + rating + " TO " + rating + "?" + "]";
         } else if(opt == "only"){
            searchQuery += " AND LetterGradeRating:[ " + rating + " TO " + rating + "?" + "]";
         } else if (opt == "hi"){
            searchQuery += " AND LetterGradeRating:[ A TO " + rating + "?" + "]";
         } else if (opt == "lo"){
            searchQuery += " AND LetterGradeRating:[ " + rating + " TO F? ]";
         }
      }

   }

 

   debug(searchQuery);

   TSCM.ratings.Ratings.searchQuery = searchQuery;
   this.q = searchQuery.replace(/ $/,"");

   this.execute();
   return;

   
}


TSCM.ratings.Query.prototype = { 

   start:0,
   docs:0,
   default_numresults:20,
   query_history:[],
   type:'',
   resultspage:0,
   base:"/screener/select/?indent=off",
   options:{
      /*rows:"20", */
      "json.wrf":"TSCM.ratings.Screener.handleSuccess",
      version:"2.1",
      wt:"json",
      stylesheet:"0" 
   },
   makeparam:function(key,value){
      return "&" + key + "=" + value;
   },
   makeurl:function(ob){
      var str=ratingsDomain + this.base;
      for(var i in this.options){
         str += "&" + i + "=" + this.options[i];
      }

      var sortval = TSCM.ratings.Screener.getSelectValue("prefs_sort1");
      var ascordesc = TSCM.ratings.Screener.getSelectValue("prefs_sort2");
      if(sortval==-1)sortval = "rating";
      if(this.q.indexOf("LetterGradeSort")==-1){
         if(sortval == "rating"){
            this.q += ";LetterGradeSort " + ascordesc + ", ticker asc";
         }else{
            this.q += ";ticker " + ascordesc + ", LetterGradeSort desc";
         }
      }

      this.q = this.q.replace(/ +/g," ");

      str+= this.makeparam("q",escape(this.q));

      str+= this.makeparam("start",TSCM.config.Config.start);

      num_results = this.getnumresults();
      str+= this.makeparam("rows",num_results);

      debug(str);
      this.last_query = str;
      return str;
   },
   getnumresults:function(){
      var num_results = TSCM.ratings.Screener.getSelectValue("prefs_numrecs");
      return num_results;
   },
   execute:function(){

      if(! __loaded)return;
      var scr= document.createElement("script");
      scr.type = "text/javascript";
      scr.defer = true;
      scr.id = 'result-js';
      try {
         this.start += this.options.rows;
      }catch(e){
         this.start = this.default_numresults;
      }

      // remove any existing results script
      var s = YAHOO.util.Dom.get('result-js');
      var head = document.getElementsByTagName('head')[0]; 
      scr.src = this.makeurl();

      try {
         if(s){
            head.removeChild(s); 
         }
      }catch(e){
         //debug(e.message);
      }
      head.appendChild(scr);
      return;
   },
   fixRecsRatingsOpts:function(selected,target){
      var buys = ["A rated","B rated"];
      var holds = ["C rated"];
      var sells = ["D rated","E rated"];
      var all= ["A rated","B rated","C rated","D rated","E rated"];
      var selected = selected.toLowerCase();

      var label = "All Ratings";
      if(selected == "buy"){
         label = "All Buy Ratings";
         TSCM.ratings.Screener.populateSelect(target,buys,label);
         // A+ to B-
      } else if (selected == "hold"){
         TSCM.ratings.Screener.populateSelect(target,holds,label,false);
         // C+ to C-
      } else if (selected == "sell"){
         label = "All Sell Ratings";
         // D+ to F
         TSCM.ratings.Screener.populateSelect(target,sells,label);
      } else if (selected == "any"){
         TSCM.ratings.Screener.populateSelect(target,all,label);
      }


   }
   
}; // Query



var the_screener = new TSCM.ratings.Screener("financial-screener"); 





TSCM.ratings.Screener.resetCompanyInfo = function(){

}

TSCM.ratings.Screener.reset = function(t){

   var fields = ['tsc_rating','marketcap','sector','subindustry','beta','exchange'];

   fields = YAHOO.util.Dom.getElementsByClassName('screener_select', 'select');

   var d = YAHOO.util.Dom.get("prefs_numrecs");
   var sortorder = YAHOO.util.Dom.get("prefs_sort1");
   var sortorder_index = sortorder.selectedIndex;
   var nresults = d.selectedIndex;

   var form = YAHOO.util.Dom.get("equity-search-form");
   try {
   document.forms['equity_search_form'].reset();
   }catch(e){}



   // set all select boxes back to zero
   var tf;
   try {
      for(var i=0;i<fields.length;i++){
         tf = fields[i];
         var d = YAHOO.util.Dom.get(fields[i]);
         if(d.options.length > 0){
            d.options[0].selected = true;
            d.options.selectedIndex = 0;
         }
      }

      TSCM.ratings.Query.fixRecsRatingsOpts('any','tsc_rating3');
      TSCM.ratings.Query.fixRecsRatingsOpts('any','etf_inv_rating');
      TSCM.ratings.Query.fixRecsRatingsOpts('any','fund_inv_rating');

   }catch(e){
      window.status = e.message;
   }

   fields = YAHOO.util.Dom.getElementsByClassName('screener_select', 'input');
   for(var i=0;i<fields.length;i++){
      var d = YAHOO.util.Dom.get(fields[i]);
      d.value = "";
   }


   // grab prefs for 
   var fe = YAHOO.util.Dom.get("prefs_numrecs");
   var ff = YAHOO.util.Dom.get("prefs_sort1");
   fe.selectedIndex = nresults;
   ff.selectedIndex = sortorder_index;

   var parent = YAHOO.util.Dom.get("results_list");
   while(parent.hasChildNodes() == true){
      parent.removeChild(parent.childNodes[0]);
   }
   YAHOO.util.Dom.get('results_header').innerHTML = "Company List";

         // default for company data box
         var innerh = ' <img src="http://www.thestreet.idmanagedsolutions.com/charts/quote/quote.chart?SYMBOL_US=INDU&MINICHART=1&HEIGHT=113&WIDTH=184&rand=' + (Math.random() * 1000) + '"> ';
         YAHOO.util.Dom.get('company_info').innerHTML = innerh;
         YAHOO.util.Dom.get("company_header").innerHTML = "Market Overview";

         var im = YAHOO.util.Dom.get('chartimg');
         im.src = "http://images.thestreet.com/tsc/c.gif?"; 
         YAHOO.util.Dom.setStyle(im, 'display', 'block');  
         //YAHOO.util.Dom.setStyle(im, 'border', '1px solid #000');  
         im.parentNode.innerHTML = im.parentNode.innerHTML;

         TSCM.ratings.Screener.search();

}


TSCM.ratings.Screener.getAltRecFromRating = function(the_letter){
         var the_rec;
         if(!the_letter){
            return '-';
         }
       if(the_letter.indexOf("A")!=-1) the_rec = "Excellent";
       if(the_letter.indexOf("B")!=-1) the_rec = "Good";
       if(the_letter.indexOf("C")!=-1) the_rec = "Fair";
       if(the_letter.indexOf("D")!=-1) the_rec = "Weak";
       if(the_letter.indexOf("E")!=-1) the_rec = "Very Weak";
       if(the_letter.indexOf("F")!=-1) the_rec = "Very Weak";



       return the_rec;



}

TSCM.ratings.Screener.getRecFromRating = function(the_letter){

         var the_rec;
         if(!the_letter){
            return '-';
         }
       if((the_letter.indexOf("A")!=-1)|| (the_letter.indexOf("B")!=-1)) the_rec = "BUY";
       if((the_letter.indexOf("C")!=-1)) the_rec = "HOLD";
       if((the_letter.indexOf("D")!=-1)||(the_letter.indexOf("E")!=-1)|| (the_letter.indexOf("F")!=-1)) the_rec = "SELL";
       return the_rec;

}

TSCM.ratings.Screener.refreshAd = function(){
   return;
         // refresh ad
         try {
            var adurl = YAHOO.util.Dom.get("adframe").src;
            var ord = Math.random() * 1000000000000000000;
            adurl = adurl.substring(0,adurl.indexOf("ord=") + 4);
            YAHOO.util.Dom.get("adframe").src = adurl + ord + "?";

         }catch(e){
            debug('ad refresh failed. ' + e.message);
         }


}


TSCM.ratings.Screener.getCompany = function(t){

   var foo = t;

   var display_image = true;

   var ecomlink = ""; 

   for(var i=0;i<document.resultSet.length;i++){
      var o = document.resultSet[i];

      ecomlink = TSCM.config.Config.ecomlink + o.tscrid;


      //if(o.ticker == t){
      if(o.tscrid == t){
         // found

         var desc;
         var charttype;
         var rating;
         var rec;

         if(TSCM.config.Config.active_tab == "ETFs"){
            rating = o.InvestmentRating;
            rec = o.recommendation;
            desc = o.desc;
            chartype = "etf";
         }else if (TSCM.config.Config.active_tab == "Funds"){
            rec = o.recommendation;
            rating = o.InvestmentRating;
            desc = o.desc;
            chartype = "funds";
         }else if(TSCM.config.Config.active_tab.indexOf("Banks")!=-1){
            rec = o.CurrentRating;
            rating = o.LetterGradeRating;
            chartype = "";
            desc = o.short_desc;
         }else{
            rec = o.CurrentRating;
            rating = o.LetterGradeRating;
            chartype = "";
            desc = o.short_desc;
         }
         var ticker = "[ " + o.ticker +  " ] " ;
         if(ticker.length > 10) ticker = ''; //  ticker.substring(0,10);
         YAHOO.util.Dom.get("company_header").innerHTML = o.issue_name + " " + ticker + " ";

         if((o.type == "funds")|| (o.type == "etf")){
               txt += "<br>1 Year Return:" + o.Perform1Year;
               txt += "<br>3 Year Return:" + o.Perform3YearReturn;
               txt += "<br>5 Year Return:" + o.Perform5YearReturn;
         }

         var the_rec = TSCM.ratings.Screener.getRecFromRating(rating); 
         if(typeof desc == "undefined"){
            desc = '<a target="_pdfwin" href="http://www.thestreet.com/tsc/ratings/pdfdata/WEBRATS/' + o.sector + '/FREECSU_' + o.desc.toUpperCase() + '.PDF">Download report for <b>' + o.issue_name + '</b></a>';
         }else{

         }

         var tab = TSCM.config.Config.active_tab;
         if((tab.indexOf("HMO")!=-1) || (tab.indexOf("Bank")!=-1)) {
               the_rec = TSCM.ratings.Screener.getAltRecFromRating(rating);
               //desc = '';
         }


         var txt = "<b>" + o.ticker + " ( " + o.issue_name + ")</b> <p>" + desc + "<p>Current Rating: " + rating + " ( " + the_rec + " ) ";

         var perf = (typeof o.Performance != "undefined") ? o.Performance : false;
         if(!!perf) txt += "<br>Performance: " + perf;

         var risk = (typeof o.Risk != "undefined") ? o.Risk : false;
         if(!!risk) txt += "<br>Risk Rating: " + risk;

			
         if((tab == "Stocks") || (tab == "ETFs")){
               txt += "<p><a style='color:white' class='jumpgreen' target='_new' href='" + ecomlink + "'>Buy full rating report >></a></p>";
         }
			
         if((tab.indexOf("HMO")!=-1) || (tab.indexOf("Bank")!=-1)) {
            display_image = false;
         }else{
            txt += "<p><a class='jumpbutton' target='_new' href='/quote/" + o.ticker + ".html?omorig=screener'>Get quote and details >></a> ";
            /*
			if(TSCM.config.Config.active_tab != 'Funds'){
               txt += "<a class='jumpbutton' target='_new' href='" + ratingsDomain + "/tools/basic/ratings.html?scr=1&s=" + o.ticker + "'>More detail >></a></p>";
            } 
            */
         }

         txt += "</p>";

         txt += "<p>";

         YAHOO.util.Dom.get('company_info').innerHTML = txt;

         TSCM.ratings.Ratings.loadRelatedStories(t);

               var im = YAHOO.util.Dom.get('chartimg');
               if(TSCM.config.Config.active_tab == "Stocks"){
                  im.src = "http://www.thestreet.idmanagedsolutions.com/charts/quote/quote.chart?MINICHART=1&HEIGHT=113&WIDTH=184&SYMBOL_US=" + o.ticker + "&rand=" + (Math.random()*1000);;
               }else{
                  if(display_image){
                  im.src = ratingsDomain + "/tools/inc/charts/" + o.ticker.toUpperCase() + "th.gif";
                  }
               }
         break;
      }
   }
   
       try {

         // omniture custom link event
          var pagename ="Screener - " + TSCM.config.Config.active_tab + " - " + o.ticker + " - " + TSCM.ratings.Ratings.searchQuery;

            /* for pageview use this */
            var repObj = new Object(); 
            repObj["pageName"]=pagename;
            repObj["channel"]="universal";
            repObj["contentCat"]="universal|tools|screener";
            repObj["contentType"]="Screener";
            repObj["hier1"]=pagename;
            TSC.reporting.config(repObj);      
            TSC.reporting.makeCall();
            var pi = repObj.pageName;
            var cg = repObj.contentCat;
            /* end pageview  */

            // pv
            TSC.reporting.makeCall(repObj);
            // link event 
            //TSC.reporting.sendLinkEvent(pagename);

       }catch(e){
          //alert(e.message);

       }

}

document.resultSet = null;
var call_in_progress = false;

TSCM.ratings.Screener.handleSuccess = function (ob){

   if(! TSCM.config.Config.inited) TSCM.config.Config.inited = true;

   if(! __loaded)return;

   call_in_progress = false;
   clearTimeout(TSCM.config.Config.timer);
   TSCM.config.Config.timer = -1;

   document.resultSet = ob.response.docs;

   var start = ob.response.start;
   if(start == 0 ) start = 1;

   start = 1;
   var txt;
   var co_word;

if(TSCM.config.Config.active_tab == "ETFs"){
   TSCM.config.Config.recordtype == "etf";
   co_word = "ETF";
}else if(TSCM.config.Config.active_tab == "Stocks"){
   TSCM.config.Config.recordtype == "equity";
   co_word = "stock";

}else if(TSCM.config.Config.active_tab == "Funds"){
      TSCM.config.Config.recordtype == "fund";
      co_word = "fund";
}else if(TSCM.config.Config.active_tab.indexOf("Banks")!=-1){
         if(TSCM.config.Config.recordtype == "BK"){
            co_word = "bank";
         }else if(TSCM.config.Config.recordtype == "SL"){
            co_word = "thrift";
         }else if(TSCM.config.Config.recordtype == "PCLH"){
            if(ob.response.numFound == 1) { 
            co_word = "insurer/hmo";
            }else{
            co_word = "insurers/hmos";
            }
         }else if(TSCM.config.Config.recordtype == "BKSL"){
            if(ob.response.numFound == 1) { 
            co_word = "bank/thrift";
            }else{
            co_word = "banks/thrift";
            }
         }
   
}else if(TSCM.config.Config.active_tab.indexOf("HMOs")!=-1){

         co_word = "company";
         if(ob.response.numFound > 1) { 
            co_word = "companie";
         }
}

// plurals
if(ob.response.numFound > 1) { 
   co_word += "s";
}

    txt = ob.response.numFound + " " + co_word + ": ";
   var displaynum; 
   
   try {
    displaynum = TSCM.ratings.Screener.getSelectValue("prefs_numrecs");
   }catch(e){
      displaynum = 20;
   }
   if(ob.response.numFound < displaynum){
      displaynum = ob.response.numFound;
   }else{
      displaynum = Math.abs(TSCM.ratings.Screener.getSelectValue("prefs_numrecs"));
   }
   var numfound = ob.response.numFound;
   var start = TSCM.config.Config.start;

    if(Math.floor(numfound) > 0) { 
       // case when you page all the way to the end 
       var thenum = (( start + displaynum) > numfound ) ? numfound : (start + displaynum);
       txt += "items " + (start+1) + " - " + thenum;


   if(ob.response.numFound > displaynum){
       txt += "&nbsp;&nbsp;<span style='text-align-right ; font-size:11px'> <a href='javascript:TSCM.ratings.Screener.first()'>first</a>";
       if(start > 1){
         txt += " | <a href='javascript:TSCM.ratings.Screener.prev()'>prev</a> ";
       }
       if(start < (numfound - displaynum)){
         txt += " | <a href='javascript:TSCM.ratings.Screener.next()'>next</a>";
       }
         txt += " | <a href='javascript:TSCM.ratings.Screener.last(" + (numfound+1) + ")'>last</a></span>";
   }


    }else{
       // handle the zero case

    }

   // set header text.(num results and such) 
   YAHOO.util.Dom.get('results_header').innerHTML = txt;

   var rh = YAHOO.util.Dom.get('results_header');
   YAHOO.util.Dom.setStyle(rh, 'background', '#e1e1e1');  
   var docs = ob.response.docs;

   //clear list
   var parent = YAHOO.util.Dom.get("results_list");
   while(parent.hasChildNodes() == true){
      parent.removeChild(parent.childNodes[0]);
   }

   // build new list
   var classname;
   for(var i = 0;i<docs.length;i++){
      var adoc = docs[i];
      var innerhtml = "";
      var d = document.createElement("div");
      if(i%2==0){
         classname = "result_item_alt";
      }else{
         classname = "result_item";
      }
      d.setAttribute("class",classname);
      //d.setAttribute("onclick" , "javascript:TSCM.ratings.Screener.getCompany('" + adoc.ticker + "');");
      d.setAttribute("onclick" , "javascript:TSCM.ratings.Screener.getCompany('" + adoc.tscrid + "');");

      var a = document.createElement("a");
      //a.setAttribute("href" , "javascript:TSCM.ratings.Screener.getCompany('" + adoc.ticker + "');");
      a.setAttribute("href" , "javascript:TSCM.ratings.Screener.getCompany('" + adoc.tscrid + "');");
      //var the_name = adoc.issue_name.substring(0,22);
      var the_name = adoc.issue_name; 
      the_name = the_name.replace('"','');

      var the_ticker = adoc.ticker;
      the_ticker = the_ticker.replace('"','');
      the_ticker  = the_ticker + " ( " + the_name + " ) ";
      var include_rec = true;

      if(typeof adoc.MgmtCity != "undefined"){
         var cty = adoc.MgmtCity;
         
         // this is weird but regex busted on the odd char
         if(  (cty.indexOf("A")==-1) &&
            (cty.indexOf("E")==-1) &&
            (cty.indexOf("I")==-1) &&
            (cty.indexOf("O")==-1) &&
            (cty.indexOf("U")==-1)
            ) {
            adoc.MgmtCity = "";
         }
      }

      if(TSCM.config.Config.recordtype == "BK"){
         the_ticker = the_name; 
         if(adoc.MgmtCity.length < 2){
            the_ticker += ", " + adoc.MgmtState;
         }else{
            the_ticker += ", " + camelcase(adoc.MgmtCity) + ", " + adoc.MgmtState;
         }
      } else if(TSCM.config.Config.recordtype == "SL"){
         the_ticker = the_name; 

         if(adoc.MgmtCity.length < 2){
            the_ticker += ", " + adoc.MgmtState;
         }else{
            the_ticker += ", " + camelcase(adoc.MgmtCity) + ", " + adoc.MgmtState;
         }


      }else if(TSCM.config.Config.recordtype == "BKSL"){
         the_ticker = the_name; 
         //the_ticker += " " + adoc.MgmtCity + "," + adoc.MgmtState;
         

         if(adoc.MgmtCity.length < 2){
            the_ticker += ", " + adoc.MgmtState;
         }else{
            the_ticker += ", " + camelcase(adoc.MgmtCity) + ", " + adoc.MgmtState;
         }

      }else if(TSCM.config.Config.recordtype == "PCLH"){
         the_ticker = the_name; 
         //the_ticker += ", " + adoc.MgmtCity + "," + adoc.MgmtState;
         the_ticker += ", " + adoc.MgmtState;
      }else if(TSCM.config.Config.recordtype == "PC"){
         the_ticker = the_name; 
         //the_ticker += ", " + adoc.MgmtCity + "," + adoc.MgmtState;
         the_ticker += ", " + adoc.MgmtState;
      }else if(TSCM.config.Config.recordtype == "LH"){
         the_ticker = the_name; 
         the_ticker += ", " + adoc.MgmtState;
      }else if(TSCM.config.Config.recordtype == "HM"){
         the_ticker = the_name; 
         the_ticker += ", " + adoc.MgmtState;
      }else{

      }

      a.innerHTML = the_ticker; 
      d.appendChild(a);

      var cd = document.createElement("span");
      var the_rec = "";
      var the_letter = "";
    if(TSCM.config.Config.active_tab == "ETFs"){
       the_rec = adoc.recommendation;
       the_letter = adoc.InvestmentRating;
    }else if(TSCM.config.Config.active_tab == "Funds"){
       the_rec = adoc.recommendation;
       the_letter = adoc.InvestmentRating;
    }else if(TSCM.config.Config.active_tab == "Stocks"){
       the_rec = adoc.CurrentRating;
       the_letter = adoc.LetterGradeRating;
       if(the_letter == "0"){
          next;
       }
    }else if(TSCM.config.Config.active_tab.indexOf("Banks")!=-1){
       include_rec = false;
       the_letter = adoc.LetterGradeRating;
       the_rec = TSCM.ratings.Screener.getRecFromRating(the_letter); 
    }else if(TSCM.config.Config.active_tab.indexOf("HMO")!=-1){
       include_rec = false;
       the_letter = adoc.LetterGradeRating;
       the_rec = TSCM.ratings.Screener.getRecFromRating(the_letter); 
    }

      
      if(typeof the_rec != "undefined"){

         if(the_rec.toLowerCase() == "buy"){
            cd.setAttribute("class","res_buy");
         }
         if(the_rec.toLowerCase()  == "hold"){
            cd.setAttribute("class","res_hold");
         }
         if(the_rec.toLowerCase()  == "sell"){
            cd.setAttribute("class","res_sell");
         }
      }else{
            cd.setAttribute("class","res_none");
      }

      if(include_rec == true){
         cd.appendChild(document.createTextNode(the_letter + " [ " + the_rec + " ] "  ));
      }else{
         cd.appendChild(document.createTextNode(the_letter ));
      }

      d.appendChild(cd);

      parent.appendChild(d);

      // required for ie. 
      d.parentNode.innerHTML = d.parentNode.innerHTML;

   }

}


function tosci(n,places) 
{ 
   var exponent = 0; 
   var sign = n < 0 ? -1 : 1; 
   n *= sign; 
   var parts = n.toString().split("."); 
   var retstr = parts[0].charAt(0) + "." + parts[0].substring(1); 

   if(places == null) places = 4; 

   if(parts.length > 1) retstr += parts[1]; 

   if(n < 1.0) 
   { 
      while(retstr.charAt(0) == '0' || 
            retstr.charAt(0) == '.') 
      { 
         retstr = retstr.substring(1); 
         if(retstr.charAt(0) == '0') exponent--; 
      } 


      retstr = retstr.charAt(0) + "." + retstr.substring(1); 
   } else if(n > 10) { 
      while(n > 10) { 
         n /= 10; 
         exponent++; 
      } 
   } 


   if(retstr.length > places + 2) 
      retstr = retstr.substring(0,places+2); 
   if(exponent!=0) 
      retstr += "e" + exponent; 
   if(sign < 0) retstr = "-" + retstr; 

   return retstr; 

}


function addcrit(id){
   var ctname = id;
   id = id + "_opts";

   var d = YAHOO.util.Dom.get(id );
   var selected = d.options[d.options.selectedIndex].value;
   var o = YAHOO.util.Dom.get(selected);
   var ct = YAHOO.util.Dom.get(ctname);
   ct.removeChild(o);
   ct.appendChild(o);
   var mod = eval("TSCM.config.Config.mods." + selected);
   mod.myshow();
   for(var i=0;i<d.options.length;i++){
      var theopt = d.options[i];
      if(theopt.value == selected) { 
         d.options[i] = null;
      }
   }

   if(d.options.length==1){
      d.setAttribute("disabled","disabled");
   }

}


var compare = function(a, b)
{
   return (b.text.toLowerCase() < a.text.toLowerCase()) - (a.text.toLowerCase() - b.text.toLowerCase());
};

var timer;


TSCM.ratings.Ratings = {};

TSCM.ratings.Ratings.loadRelatedStories = function(ticker){
      if(! __loaded)return;

      return;
      TSCM.util.setText("company_info_links","");
      if(call_in_progress)return;
      call_in_progress = true;
      setTimeout('call_in_progress=false',200);
   
      var scri = document.createElement("script");
      scri.defer = true;
      scri.type = "text/javascript";
      scri.id = "ratings_related_stories";
      var ratingStorySearch = "http://find.thestreet.com";
      scri.src = ratingStorySearch + "/cgi-bin/texis/relatedbyticker?qt=" + ticker;
      document.getElementsByTagName("head")[0].appendChild(scri);
}


TSCM.ratings.Ratings.loadLatestStories = function(wrapper,keyword){
      

      if(! __loaded)return;

      TSCM.util.setText("company_info_links","");
      if(!TSCM.util.isDefined(keyword)){
         keyword = TSCM.ratings.Ratings.getNewsKeyword();
      }

      if(call_in_progress)return;
      call_in_progress = true;
      setTimeout('call_in_progress=false',200);
   
      var scri = document.createElement("script");
      scri.defer = true;
      scri.type = "text/javascript";
      scri.id = "ratings_latest_stories";
      var ratingStorySearch = "http://find.thestreet.com";

      // 
      //scri.src = ratingStorySearch + "/cgi-bin/texis/latest-stories?k=" + keyword + "&wrf=" + wrapper;
      scri.src = "http://www.thestreet.com/feeds/search/index.html?puc=ibs&format=json&query=sitecode:TSC&callback=" + wrapper;

      document.getElementsByTagName("head")[0].appendChild(scri);
}



TSCM.ratings.Ratings.webDomain = document.location.protocol + document.location.port + '//' + document.location.hostname;

TSCM.ratings.Screener.showmodules = function(ob){
        var doc = YAHOO.util.Dom.get("doc");
        YAHOO.util.Dom.setStyle(doc, 'display', 'block'); 
        var res = YAHOO.util.Dom.get("results_ct");
        YAHOO.util.Dom.setStyle(res, 'display', 'block'); 
        var ct = YAHOO.util.Dom.get("screener_container");
        YAHOO.util.Dom.setStyle(ct, 'display', 'block'); 
}

TSCM.ratings.Ratings.handleLatestStories = function(obj){

   var ob = obj.channel.item;

      call_in_progress = false;
      var storyTemp = "";
      var storytype  = "Latest";
      storyTemp += "<div class='related_story_header'><img src='http://images.thestreet.com/tsc/ratings/img/ptr.gif'> " + storytype + " stories on TheStreet.com <img src='http://images.thestreet.com/tsc/ratings/img/ptr.gif'></div>";
      for(var i = 0; i < 9 - 1; i++){
         ob[i].pubDate = ob[i].pubdate;
         ob[i].headline = ob[i].title;
         ob[i].byline = ob[i].author;
         var adate = ob[i].pubDate;
         var year,month,day,hour,minute,second;
         var datestr, timestr;
         var pubdate;

         try {
            var array = adate.split(' ');
            datestr = array[0];
            timestr = array[1];
            var dateparts = datestr.split('-');
            year = dateparts[0];
            month = dateparts[1];
            day = dateparts[2];
            month--;
            var timeparts = timestr.split(':');
            second = timeparts[2];
            minute = "" + timeparts[1];
            hour = timeparts[0];
            
            var pd = new Date ( year, month, day, hour, minute, second )
            var yr = pd.getYear();
            if(yr < 200) { 
               yr += 1900;
            }
            var min = pd.getMinutes();
            if(Math.abs(min)<10){
               min = "0" + min;
            }
            var hr = pd.getHours();
            var sign="AM";
            if(hour > 12){
               sign = "PM";
               hr -= 12;
            }

            var printdate = (pd.getMonth()+1)  + "/" + pd.getDate() + "/" + yr + " " + hr + ":" + min + " " + sign + " EST";


            
         }catch(e){
            printdate = ob[i].pubdate;
         }

         var sec = "";
         if(TSCM.config.Config.active_tab=="Stocks"){
            sec = ob[i].section + "<br>";
         }
         sec = "";
		var thelink = ob[i].link;
		var id = thelink.match(/(\/)([0-9]+)/)[2];
		var newlink = '/story/' + id + '/1/index.html';
         TSCM.ratings.Ratings.webDomain = "http://www.thestreet.com";
         storyTemp = storyTemp + "<div class='related_story'>" + sec +  "<a target='_new' href = '" + TSCM.ratings.Ratings.webDomain + newlink +"'>"+ob[i].headline.replace("&amp;","&") +  "</a></div>"; //<div class='related_story_byline'>by "+ob[i].byline+" - "+ob[i].pubdate+"</div>";

      }

      if(ob.length > 1){
         TSCM.util.setText("company_info_links",storyTemp);
         var keyword = TSCM.ratings.Ratings.getNewsKeyword();
         eval( "TSCM.ratings.Screener." + keyword + "_latest_stories=ob"); 
         
      }

      TSCM.ratings.Screener.refreshAd();

}
TSCM.ratings.Ratings.getNewsKeyword = function(){
   if(TSCM.config.Config.active_tab=="Stocks"){
      return "equities";
   }else if(TSCM.config.Config.active_tab=="ETFs"){
      return "etfs";
   }else if(TSCM.config.Config.active_tab=="Funds"){
      return "funds";
   } 
      return "equities";
}

TSCM.ratings.Ratings.handleRelatedStories = function(ob){
   call_in_progress = false;
   var keyword = TSCM.ratings.Ratings.getNewsKeyword();
   var storytype = "Latest";
   if((ob == null) || (ob.length <2)) {
      storytype  = "Latest";
      var thestories = eval( "TSCM.ratings.Ratings." + keyword + "_latest_stories"); 
      if((TSCM.ratings.Ratings.latest_stories == null) || (typeof TSCM.ratings.Ratings.latest_stories == "undefined")){
      //if((thestories == null) || (typeof thestories == "undefined")){
         TSCM.ratings.Ratings.loadLatestStories("TSCM.ratings.Ratings.handleLatestStories");
         return;
      } else {
         ob = thestories;
      }
   } else{
      storytype = "Related";
   }

   if(ob != null){
      //debug("ob length" + ob.length);
   }

      var storyTemp = "";
      var header = storytype + " stories on TheStreet.com";
      var link = "<a target='_new' href='http://www.thestreet.com/now/index.html'>";
      if(storytype == "Latest") {
         link = "";
      }
      var linkclose = "</a>";
      storyTemp += "<div class='related_story_header'><img src='/tsc/ratings/img/ptr.gif'> " + link + header + linkclose + "<img src='/tsc/ratings/img/ptr.gif'></div>";
      for(var i = 0; i < ob.length - 1; i++){
         TSCM.ratings.Ratings.webDomain = "http://www.thestreet.com";
         storyTemp = storyTemp + "<div class='related_story'><a target='_new' href = '" + TSCM.ratings.Ratings.webDomain + "/" + ob[i].link +"'>"+ob[i].headline.replace("&amp;","&") +  " - " + "</a></div><div class='related_story_byline'>by "+ob[i].byline+" - "+ob[i].pubdate+"</div>";
      }

      if(ob.length > 1){
         TSCM.util.setText("company_info_links",storyTemp);
      }

      setTimeout("TSCM.ratings.Screener.refreshAd()",1000);

}


TSCM.ratings.Screener.handleServerError = function(code){
   window.status = "server error: " + code;
}

TSCM.ratings.Screener.handlePrint = function(ob){

   clearTimeout(TSCM.config.Config.timer);
   var foo = window.open();
   foo.document.open();
   foo.document.writeln('<meta http-equiv="Content-Type" content="text/plain;">');


   var fs = "</td><td>"; // field separator
   var rs = "<tr><td>"; // row start
   var re = "</td></tr>"; // row end
   var ts = "<table border='1'>"; // table start
   var te = "</table>"; // table end 

   var pt; // printtype
   //"test.csv"pt = TSCM.ratings.Screener.getSelectValue("printtype");
   pt = "";

   if(pt == "csv") { 
      fs = '","';
      rs = '"';
      re = '"';
      ts = '<textarea rows="100" cols="100">';
      te = '</textarea>';
   }


   var docs = ob.response.docs;

   foo.document.writeln(ts);
   foo.document.writeln( "<tr><td colspan=4>Screener results: " + TSCM.config.Config.active_tab + "</td></tr>");

    if((TSCM.config.Config.active_tab.indexOf("Banks")!=-1) || (TSCM.config.Config.active_tab.indexOf("HMO")!=-1)){

   foo.document.writeln(rs + "" + fs  + "Name" + fs + "Recommendation" + fs + "Rating" + re );
    }else{

   foo.document.writeln(rs + "Ticker" + fs  + "Name" + fs + "Recommendation" + fs + "Rating" + re );

    }




var the_rec,the_letter;

   for(var i = 0;i<docs.length;i++){
      var adoc = docs[i];

      var tab = TSCM.config.Config.active_tab;
      if((tab == "Stocks" )||(tab.indexOf("HMO")!=-1 )||(tab.indexOf("Bank")!= -1)){
        the_letter = adoc.LetterGradeRating;
        the_rec = TSCM.ratings.Screener.getRecFromRating (the_letter);
        //the_rec = adoc.CurrentRating;
      }else{
       the_rec = adoc.recommendation;
       the_letter = adoc.InvestmentRating;
      }

    if((TSCM.config.Config.active_tab.indexOf("Banks")!=-1) || (TSCM.config.Config.active_tab.indexOf("HMO")!=-1)){
      foo.document.writeln(rs + fs + adoc.issue_name + fs + the_rec + fs + the_letter + re);
    }else{
      foo.document.writeln(rs + adoc.ticker + fs + adoc.issue_name + fs + the_rec + fs + the_letter + re);
    }

   }
      foo.document.writeln(te);

   foo.document.close();
   foo.print();
}

TSCM.ratings.Screener.print = function(){
   window.status = "print: ";

   TSCM.ratings.Screener.printdialog.cfg.setProperty("xy",[300,200]);
   TSCM.ratings.Screener.printdialog.show();

}

TSCM.ratings.Screener.doprint = function(){

   var q = new TSCM.ratings.Query();

   q.getnumresults = function(){ 

      var d = YAHOO.util.Dom.get("nprint_prefs");
      return d.value;

   };
   q.options["json.wrf"] = "TSCM.ratings.Screener.handlePrint";
   q.execute();
   q.options["json.wrf"] = "TSCM.ratings.Screener.handleSuccess";


}



function trim(s){return s;};
function camelcase( s ) { 
   var w = s.split(' ');
   var f = [];
   var first;
   var rest;
   for(var i = 0;i<w.length;i++){
      var wrd = w[i];
      first = wrd.substring(0,1).toUpperCase();
      rest = wrd.substring(1).toLowerCase();
      w[i] = first + rest;
   }

      var ret = w.join(' ');
      ret = ret.replace(/ +$/,'');
      return ret;
   
}
String.prototype.camelCase = function() { var s = trim( this );  return ( /\S[A-Z]/.test( s ) ) ?   s.replace( /(.)([A-Z])/g, function(t,a,b) { return a + ' ' + b.toLowerCase(); } ) :   s.replace( /( )([a-z])/g, function(t,a,b) { return b.toUpperCase(); } ); };

String.prototype.trim=function(){return this.replace(/^\\s+|\\s+$/g,'');}
function log(m){
   if(typeof console!= "undefined"){
      console.log(arguments);
   }
}
function debug(m){


   var div = document.getElementById("debug");
   div.innerHTML = m + "<br>" + div.innerHTML;
   log(m);
}

