
screener.prototype.viewResults = function() {
  if(this.totalResults != 0) {
    this.buffer.src = 'force_results.asp';
  } else {
  	alert("You must have at least one result to view the results page.");
  }
}

//Show Default, or User selected Rows
screener.prototype.initDisplayRows = function(){
	var ctrlBox = Element.get("controlBox");
	
	if(ctrlBox){
	  this.selOn = [];
	  this.selArray = [];
	  this.selArray["LP"] = 0;
	  this.selArray["TRP"] = 0;
	  this.selArray["F"] = 0;
	  this.parArray = [];
	  var selSet = false;
	  var aTags = document.getElementsByTagName("a");
	  var iTags = document.getElementsByTagName("input");
	  var sTags = document.getElementsByTagName("select");
	  
	  for(var i = 0; i < iTags.length; i ++) {
		
	    if(iTags[i].type == 'checkbox') {iTags[i].checked = false;}
	  }

	  if(selSet == false) {
		  //using the information recieved from user.Session("scottradefund.lastCriteria") as set on line 25
		  //of fund_screener.asp in the initiation of the screener object, we parse out the criteria list and add it
		  // to selOn array. I used the group "LP" because it seems to be arbitrary in this case.
		  var temparr = [];
		  if (this.lastCriteria != ''){
    	  var exp = this.lastCriteria.split(';');
		
				for(var o = 0; o < exp.length; o++){
					temparr = exp[o].split(':')
					this.selOn.push({id:temparr[0],group:"LP"});
				}
			}
			this.selOn.push({id:"STAvailableAtScottrade", group:"LP"});
			this.selOn.push({id:"STLoad", group:"LP"});
			this.selOn.push({id:"STTransactionFee", group:"LP"});
			this.selOn.push({id:"LP.fund_family_code", group:"LP"});
	    this.selOn.push({id:"LP.LCAssetTypeName",group:"LP"});
	    this.selOn.push({id:"LP.tot_pfm_1month_cum",group:"TRP"});
	    this.selOn.push({id:"LP.PEAvg",group:"F"});	    
	    
	    for(var i = 0; i < this.selOn.length; i++) {
	      this.parArray.push(this.selOn[i].id + "_row");
	      if(Element.get(this.selOn[i].id+"_check")) { Element.get(this.selOn[i].id + "_check").checked = true; } //checks to make sure this criteria has a check box. if it does, it checks it.
	      this.selArray[this.selOn[i].group] = 1;
	      screener.numberSelected(this.selOn[i].group + '_sel', 'add');
	    }
	  }
	  for(var j in this.selArray) {
	    if(this.selArray[j] == 1) {
	      screener.expandSectionList(Element.get(j));
	    }
	  }
	  
	  var rows = Element.parseSelector(".hideRow",Element.get("screener"));
	  for(var j in rows) {
	    for(var i = 0; i < this.parArray.length; i++) {
	      if(rows[j].id == this.parArray[i]) { 
	        Element.addClass(rows[j],"showRow"); 
	      }
	    }
	  }
	  this.lipperBtns = Element.parseSelector(".lipper_buttons", Element.get("screener"));
	
	  var selAll = true;
	  var oneOn = false;
	  for(var k in this.lipperBtns) {
	    var index = this.lipperBtns[k].id.charAt(this.lipperBtns[k].id.length - 1);
	    var id = this.lipperBtns[k].id.split(":")[0] + ':EQU:0';
	    if(index != 0 && this.lipperBtns[k].className.indexOf("off") < 0) {
	      oneOn = true;
	    }
	    if(index != 0 && this.lipperBtns[k].className.indexOf("off") > 0) {
	      selAll = false;
	    }
	    if(index == 5 && selAll == true) {
	      Element.removeClass(id, "lipper_0_off");
	      Element.addClass(id, "lipper_0_on");
	    }
	  }
	  if(oneOn == true || selSet == false) {
	    var el = Element.get("lipper.leaders_check");
	    el.checked = true;
	    screener.numberSelected('LL_sel','add');
	    Element.addClass("lipper.leaders_row","showRow");
	    screener.expandSectionList(Element.get("LL"));
	  }
	}
	else{
		this.selOn = [];
		this.selOn.push({id:"STAvailableAtScottrade", group:"LP"});
		this.selOn.push({id:"STLoad", group:"LP"});
		this.selOn.push({id:"STTransactionFee", group:"LP"});
		this.selOn.push({id:"LP.fund_family_code", group:"LP"});
		this.selOn.push({id:"LP.LCAssetTypeName",group:"LP"});
	  this.selOn.push({id:"LP.tot_pfm_1month_cum",group:"TRP"});
	  this.selOn.push({id:"LP.PEAvg",group:"F"});	
	  
	  for(var i = 0; i < this.selOn.length; i++){
	  	var row = Element.get(this.selOn[i].id + "_row");
	  	if(row){
	  		row.className = "showRow";
	  	}
	  }
	}
}

//Change the number display for selected check boxes
screener.prototype.numberSelected = function(id, op) {
  var sel = Element.get(id);
  var num = parseInt(sel.innerHTML.substring(0, sel.innerHTML.indexOf(" sel")));
  if(op == 'add') {
  	num++;
  } else {
  	num--;
  }
  sel.innerHTML = num + ' sel';
  if(num == 0) {
    screener.expandSectionList(Element.get(sel.id.split("_")[0]));
  }
}

//Expand the Selection box
screener.prototype.expandSectionList = function(el){
  selectionContainer = Element.get(el.id + "_list");
	if(selectionContainer.style.display == "block"){
		selectionContainer.style.display = "none";
		el.style.backgroundImage = "url(/scottrade/research/common/img/buttons/greyArrowRight.gif)";
	}
	else{
		selectionContainer.style.display = "block";
		el.style.backgroundImage = "url(/scottrade/research/common/img/buttons/greyArrowDown.gif)";
	}
}

screener.prototype.selectionChecked = function(who,fromRow) {
  var tempParent = Element.getParent(who, "div");
  while(tempParent.className != "boxList"){
  	tempParent = Element.getParent(tempParent, "div");
  }
  
  var tempId = tempParent.id.split("_")[0];
  
  if(who.checked == true) {
  	screener.numberSelected(tempId + '_sel', 'add');
  } else {
    screener.numberSelected(tempId + '_sel', 'sub');
  }
  if(!fromRow) {
  	var selId = who.id.split("_check")[0];
  	this.row = Element.get(selId + "_row");
    screener.toggleRow(this.row, true);
  }
}

// toggle specific display
screener.prototype.toggle = function(who, turnOn) {
  var topicCriteria = document.getElementById(who+"_extra");
	var topicToggle = document.getElementById(who+"_toggle");
	if (topicCriteria.style.display == 'block' && !turnOn) {
		topicCriteria.style.display = 'none';
		topicToggle.innerHTML = 'Show All '+this.toggleDesc[who]+' Criteria';
	} else {
		topicCriteria.style.display = 'block';
		topicToggle.innerHTML = 'Hide All '+this.toggleDesc[who]+' Criteria';
	}
}
// toggle all
screener.prototype.toggleAll = function(dir) {
	if (this.toggleDir == 1) {
		for (var who in this.toggleDesc) {
			try {
				document.getElementById(who+"_extra").style.display = 'none';
				document.getElementById(who+"_toggle").innerHTML = 'Show All '+this.toggleDesc[who]+' Criteria';
			} catch(e) {}
		}
		this.toggleDir = 0;
		document.getElementById("toggleAllLink").innerHTML = "Show All Criteria";
		document.getElementById("toggleAllLink2").innerHTML = "Show All Criteria";
	} else {
		for (var who in this.toggleDesc) {
			try {
				document.getElementById(who+"_extra").style.display = 'block';
				document.getElementById(who+"_toggle").innerHTML = 'Hide All '+this.toggleDesc[who]+' Criteria';
			} catch(e) {}
		}
		this.toggleDir = 1;
		document.getElementById("toggleAllLink").innerHTML = "Hide All Criteria";
		document.getElementById("toggleAllLink2").innerHTML = "Hide All Criteria";
	}
}

//Lipper Section
screener.prototype.lipperButtons = function(el, type) {
  var prefix = el.id.split(":")[0]; 
  
  if(type == '0') {   
    if(el.className.indexOf("off") > 0) {
      for(var i = 0; i < 6; i++) {
        var tempId = prefix + ':EQU:' + i;
        var cName = 'lipper_' + i;
        if(Element.get(tempId).className.indexOf("off") > 0) { 
          Element.removeClass(tempId, cName + '_off'); 
        }
        Element.addClass(tempId, cName + '_on');
        if(i != 0) { this.selected[tempId] = tempId; }
      }
    }
    else {
      for(var i = 0; i < 6; i++) {
        var tempId = prefix + ':EQU:' + i;
        var cName = 'lipper_' + i;
        if(Element.get(tempId).className.indexOf("on") > 0) { 
          Element.removeClass(tempId, cName + '_on'); 
        }
        Element.addClass(tempId, cName + '_off');
        if(i != 0) { this.selected[tempId] = 0; }
      }
    } 
  }
  else {
    var cName = 'lipper_' + type;
    if(el.className.indexOf("off") < 0) {
      Element.removeClass(el, cName + '_on');
      Element.addClass(el, cName + '_off');
      Element.removeClass(prefix + ':EQU:0', 'lipper_0_on');
      Element.addClass(prefix + ':EQU:0', 'lipper_0_off');
      if(this.selected[el.id]) {
        this.selected[el.id] = 0;
      }
    }
    else {
      Element.removeClass(el, cName + '_off');
      Element.addClass(el, cName + '_on');
      this.selected[el.id] = el.id;
    }
  }
  this.load();
}

screener.prototype.lipperRadios = function(el) {
  this.lipperArray = [];
  this.lipperArray.push('_grade','TotalReturn','ConsistentReturn','Preservation','TaxEfficiency','Expense');
  
  for(var i in this.selected) {
    for(var j = 0; j < this.lipperArray.length; j++) {
      if(i.indexOf(this.lipperArray[j]) > 0) {
        this.selected[i] = 0;
      }
    }
  }
  
  this.lipperBtns = Element.parseSelector(".lipper_buttons", Element.get("screener"));
  
  this.firstRow = [];
  this.secondRow = [];
  this.thirdRow = [];
  this.fourthRow = [];
  this.fifthRow = [];
  
  for(var k in this.lipperBtns) {
    if(this.lipperBtns[k].className.indexOf("off") < 0) {
      if(this.lipperBtns[k].toString().indexOf("first") > -1) {
        this.firstRow.push(this.lipperBtns[k].id);
      }
      else if(this.lipperBtns[k].toString().indexOf("second") > -1) {
        this.secondRow.push(this.lipperBtns[k].id);
      }
      else if(this.lipperBtns[k].toString().indexOf("third") > -1) {
        this.thirdRow.push(this.lipperBtns[k].id);
      }
      else if(this.lipperBtns[k].toString().indexOf("fourth") > -1) {
        this.fourthRow.push(this.lipperBtns[k].id);
      }
      else if(this.lipperBtns[k].toString().indexOf("fifth") > -1) {
        this.fifthRow.push(this.lipperBtns[k].id);
      }
    }
  }

  switch(el.value) {
    case "0":
      var first_row =     '.OverallTotalReturn:';
      var second_row =    '.OverallConsistentReturn:';
      var third_row =     '.OverallPreservation:';
      var fourth_row =    '.OverallTaxEfficiency:';
      var fifth_row =     '.OverallExpense:';
      break;
    case "3":
      var first_row =     '.tot_ret_grade:';
      var second_row =    '.cons_ret_grade:';
      var third_row =     '.pres_grade:';
      var fourth_row =    '.tax_eff_grade:';
      var fifth_row =     '.exp_grade:';
      break;
    case "5":
      var first_row =     '.5YrTotalReturn:';
      var second_row =    '.5YrConsistentReturn:';
      var third_row =     '.5YrPreservation:';
      var fourth_row =    '.5YrTaxEfficiency:';
      var fifth_row =     '.5YrExpense:';
      break;
    case "10":
      var first_row =     '.10YrTotalReturn:';
      var second_row =    '.10YrConsistentReturn:';
      var third_row =     '.10YrPreservation:';
      var fourth_row =    '.10YrTaxEfficiency:';
      var fifth_row =     '.10YrExpense:';
      break;    
  }      

  for(var t = 0; t < this.firstRow.length; t++) {
    var string = this.firstRow[t].replace(/([.].*?[:])/i, first_row);
    this.selected[string] = string;
  }    
  for(var t = 0; t < this.secondRow.length; t++) {
    var string = this.secondRow[t].replace(/([.].*?[:])/i, second_row);
    this.selected[string] = string;
  } 
  for(var t = 0; t < this.thirdRow.length; t++) {
    var string = this.thirdRow[t].replace(/([.].*?[:])/i, third_row);
    this.selected[string] = string;
  } 
  for(var t = 0; t < this.fourthRow.length; t++) {
    var string = this.fourthRow[t].replace(/([.].*?[:])/i, fourth_row);
    this.selected[string] = string;
  } 
  for(var t = 0; t < this.fifthRow.length; t++) {
    var string = this.fifthRow[t].replace(/([.].*?[:])/i, fifth_row);
    this.selected[string] = string;
  } 
  
  var qsArr = [];
  // Need to re-order the qs ugh

	for (var i in this.selected) {
		if (this.selected[i]) {
			var tmp = this.selected[i].split(":");
			if (qsArr[tmp[0]]) {
				qsArr[tmp[0]] += ':'+tmp[1]+':'+tmp[2];
				if (tmp[3]) {
					qsArr[tmp[0]] += ':'+tmp[3]+':'+tmp[4];
				}
			} else {
				qsArr[tmp[0]] = this.selected[i];
			}
		}
	}
	// transform
	this.qs = '';
	for (var k in this.criteriaJS) {
		if (qsArr[k]) {
			this.qs += qsArr[k] + ';';
		}
	}
	this.qs = this.qs.substr(0,this.qs.length - 1);
  this.srcClass = 'screener_update_lipper.asp?c='+this.qs+'&tf='+el.value;
  this.buffer.src = this.srcClass;

}

// Sets up Criteria for buttons and select elements
screener.prototype.set = function(criteriaEle,type,remoteVal) {
  if (!remoteVal) {remoteVal = '';}

	if (criteriaEle.value) { // when ever a .value is present, means it's a form element
		var criteria = criteriaEle.id;
		var criteriaValue = criteriaEle.value;
	} else {
		var criteria = criteriaEle.id;
		var criteriaValue = criteria + remoteVal;
	}
	// test for combined inputs
	if (type == 'combine_button') {
		if (!criteriaValue.split(":")[2]) {return false;}
		if (remoteVal && isNaN(remoteVal)) {return false;}
	}

	if (type == 'combo') {
		if (!criteriaValue.split(":")[2]) {
			// turn off button
			criteriaEle.className = "offToggleBtn";
			return false;
		}
	}
	if(type == 'select') {
    this.selected[criteria] = 0;
    for(var i = 0; i < criteriaEle.options.length; i++) {
      this.selected[criteriaEle.options[i].value] = 0;
      if(criteriaEle.options[i].selected) {
      	this.selected[criteriaEle.options[i].value] = criteriaEle.options[i].value; // turn on
      }
    }
	}

	this.screenResults.innerHTML = "loading ...";
  this.screenResults1.innerHTML = "loading ...";
	if (this.selected[criteria]) {
		this.selected[criteria] = 0; // turn off
		if (type == 'button' || type == 'combine_button' || type == 'combo') {
			criteriaEle.className = "offToggleBtn";
		}
	}
	else if (this.selected[criteria.split(":")[0]]) {
	    this.selected[criteria.split(":")[0]] = 0;
		if (type == 'button' || type == 'combine_button' || type == 'combo') {
			criteriaEle.className = "offToggleBtn";
		}
	}
	else {
		this.selected[criteria] = criteriaValue; // turn on
		if (type == 'button' || type == 'combine_button' || type == 'combo') {
			criteriaEle.className = "onToggleBtn";
		}
	}
	if (criteria.split(":")[0] == 'LP.LCAssetTypeName') { 
        var assetType = '';
        if(Element.get("LP.LCAssetTypeName:LIKE:Equity").className == "onToggleBtn") {
    	    assetType += "Equity";
        }
        if(Element.get("LP.LCAssetTypeName:LIKE:Fixed Income").className == "onToggleBtn") {
          if(assetType != '')
            assetType += "|Fixed Income";
          else
            assetType += "Fixed Income";
        }
		    this.srcClass = 'screener_update_classes_funds.asp?assetTypes='+assetType;
		    this.buffer.src = this.srcClass;
	}
	else {
		this.load();
	}
}

screener.prototype.toggleRow = function(element,fromSel) {
  if(!element.id) {
  	element = Element.getParent(Element.getParent(element,"tr"),"div");
  }
    
	if(Element.hasClass(element,"showRow")) {
    Element.removeClass(element,"showRow");  
    
    this.screenResults.innerHTML = "loading ..."; 
    this.screenResults1.innerHTML = "loading ...";
    
    this.aArray = element.getElementsByTagName("a");
    for(var i = 0; i < this.aArray.length; i++) {
    	if (this.selected[this.aArray[i].id]) {
	    	this.selected[this.aArray[i].id] = 0;
	    	this.aArray[i].className = this.aArray[i].className.replace("on", "off");
			}    
    }
        
    this.iArray = element.getElementsByTagName("input");
    for(var i = 0; i < this.iArray.length; i++) {
      if(this.iArray[i].type != 'hidden' && this.iArray[i].type != 'radio') {
        this.iArray[i].value = '';
        var args = this.iArray[i].id.split(":");
        var args1 = args[0];
        var args2 = ':';
        args2 += args[1];
        args2 += ':';        
        screener.combine(this.iArray[i],args1,args2,1);
      }
    }
        
    this.sArray = element.getElementsByTagName("select");
    for(var i = 0; i < this.sArray.length; i++) {
      for(var j in this.selected) {
      	if (this.selected[j] && this.selected[j].indexOf(this.sArray[i].id) > -1) {
        	this.selected[j] = 0;
    		}
      }
			if(this.sArray[i].id == "LP.LCClassificationId") { 
	    	this.sArray[i].selectedIndex = 0; 
			}    
			if(this.sArray[i].id == "LP.fund_family_code") { 
	    	this.sArray[i].selectedIndex = 0; 
			}  
    }
        
    this.load();
        
    if (fromSel != true) 
	{
		this.checkId = element.id.substring(0, element.id.length - 4);
		var el = Element.get(this.checkId + "_check")
		if (el) 
		{
			el.checked = false;
			screener.selectionChecked(el, true);
		}
	}
  }
  else {
  	Element.addClass(element,"showRow");
  }
}

screener.prototype.toggleChoice = function(element,remotePrefix) {
	var remoteElement = document.getElementById(remotePrefix);
	var elementID = element.id;
	var newValue = elementID.replace(remotePrefix,"");
	var oldValue = remoteElement.value;

	var isOn = 0;
	if (element.className != "on") {
		element.className = "on";
		remoteElement.value += newValue;
		isOn = 1;
	} else {
		element.className = "off";
		remoteElement.value = oldValue.replace(newValue,"");
	}

	// reload
	this.turnOff(remoteElement.id,remoteElement.value,oldValue, isOn);
	this.load();
}
// turns off all "combo" type selections
screener.prototype.turnOff = function(prefix,newValue,oldValue, isOn) {
	var options = [];
	options['PvsSP500'] = ["MG.Price.vsSPX.Last4W","MG.Price.vsSPX.Last13W","MG.Price.vsSPX.Last52W"];
	options['PvsIndustry'] = ["MG.Price.vsInd.Last4W","MG.Price.vsInd.Last13W","MG.Price.vsInd.Last52W"];
	options['ConsensusChange'] = ["IRP.BNYJayBNYJaywalkConsensusChange7Day","IRP.BNYJaywalkConsensusChange1Month","IRP.BNYJaywalkConsensusChange3Month"];
	options['PERatio'] = ["MG.PE.Hist.TTM","MG.PECurrFYProj","MG.PENextFYProj"];
	options['EPSGrowthAnnual'] = ["IBES.EPSGrowthCFY","IBES.EPSGrowthNFY"];
	options['RevenueGrowth'] = ["IBES.RevenueGrowthCFY","IBES.RevenueGrowthNFY"];
	options['EMAAboveBelow'] = ["DS.ThirteenDayExponentialMovingAvg","DS.FiftyDayExponentialMovingAvg"];
	options['ConsEarnings'] = ["IBES.ConsecutiveQtrsEarnDown","IBES.ConsecutiveQtrsEarnUp"];

	var element = document.getElementById(prefix+newValue);
	var noneSelected = 1;
	for (var b = 0;b<options[prefix].length;b++) {
		var criteria = options[prefix][b];
		if (this.selected[criteria]) {
			noneSelected = 0;
			if (newValue) {
				this.selected[criteria] = options[prefix][b]+newValue;
			} else {
				this.selected[criteria] = 0;
				var ele = document.getElementById(criteria);
				ele.className = "off";
			}
		}
	}
	//if (noneSelected && isOn) {} // for error msg
}

// toggles a "Button" type selection (wrapper for set)
screener.prototype.toggleButton = function(criteriaEle,type,group) {
	// group is an id for a group of buttons to toggle
	var options = [];
		options['PEG'] = ["MG.PEG:LEQ:1","MG.PEG:GTR:1"];
		options['insider'] = ["TI.InsiderActivityNetAccumulation:EQU:1","TI.InsiderActivityNetDistribution:EQU:1"];
		options['PayoutRatio'] = ["MG.PayoutRatioBelowIndAvg:EQU:1","MG.PayoutRatioAboveIndAvg:EQU:1"];
		options['EMA'] = ["MG.13dEMABelow50dEMA:EQU:1","MG.13dEMAAbove50dEMA:EQU:1"];

	// turn all off, and deselect all in group
	for (var b = 0;b<options[group].length;b++) {
		var criteria = options[group][b];
		if (criteria != criteriaEle.id) {
			this.selected[criteria] = 0;
			var ele = document.getElementById(criteria);
			ele.className = "selOff";
			document.getElementById(criteria+"_left").src = 'sImgL.gif';
			document.getElementById(criteria+"_right").src = 'sImgR.gif';
		}
	}
	screener.set(criteriaEle,type);
}

// Used for toggling "combine_button" w/Free Text Input type selections
screener.prototype.toggleInput = function(id,newValue) {
	if (!newValue) {return false;}

	var options = [];
	options['pChg'] = ["MG.Price1dPctChg:GTR:","MG.Price5DayPctChg:GTR:","MG.Price.Change.Last4W:GTR:","MG.Price.Change.Last13W:GTR:","MG.Price.Change.Last52W:GTR:"];
	options['ConsensusChange'] = ["IRP.BNYJayBNYJaywalkConsensusChange7Day:GTR:","IRP.BNYJaywalkConsensusChange1Month:GTR:","IRP.BNYJaywalkConsensusChange3Month:GTR:"];
	options['week52Pct'] = ["MG.Price.Change.52WHigh:LSS:","MG.Price.Change.52WLow:LSS:"];

	for (var b in options[id]) {
		var criteria = options[id][b];
		if (this.selected[criteria]) {
			if (newValue && isNaN(newValue)) {
				this.selected[criteria] = 0;
				var ele = document.getElementById(criteria);
				ele.className = "selOff";
				document.getElementById(criteria+"_left").src = 'sImgL.gif';
				document.getElementById(criteria+"_right").src = 'sImgR.gif';
			} else {
				this.selected[criteria] = criteria+newValue;
			}
		}
	}
	window.clearTimeout(this.loadTimeID);
	this.loadTimeID = window.setTimeout("screener.load();",1000);
}

// serializes and loads buffered prescreen
screener.prototype.load = function() {
	var qsArr = [];
	// Need to re-order the qs ugh
	
	for (var i in this.selected) {
		if (this.selected[i]) {
			var tmp = this.selected[i].split(":");
			if (qsArr[tmp[0]]) {
				qsArr[tmp[0]] += ':'+tmp[1]+':'+tmp[2];
				if (tmp[3]) {
					qsArr[tmp[0]] += ':'+tmp[3]+':'+tmp[4];
				}
			} else {
				qsArr[tmp[0]] = this.selected[i];
			}
		}
	}
	// transform
	this.qs = '';
	for (var k in this.criteriaJS) {
		if (qsArr[k]) {
			this.qs += qsArr[k] +';'
		}
	}
	
	var lipperRadios = Element.get("lipperRadioForm");
	if(lipperRadios){
		lipperRadios = lipperRadios.getElementsByTagName("input");
	
		for(var i = 0; i < lipperRadios.length; i++) {
    	if(lipperRadios[i].checked) {
      	this.tf = lipperRadios[i].value;
    	}
		}
	}
	this.qs = this.qs.substr(0,this.qs.length - 1);
  
  var dataParams = "c=" + this.qs;
  dataParams += '&tf='+this.tf;
  if(!this.qs){dataParams = "clear=1";}
	this.buffer.src = 'fund_screener_buffer.asp?'+dataParams;
}

// combines Required results from 2 input elements
// If both combinations are not Required - set notRequired Flag
screener.prototype.combine = function(who,base,required,notRequired) {
	// check required
	var req = document.getElementById(base+required);
	var val = parseFloat(who.value);
	var valReq = parseFloat(req.value);

	// check if number
	if (who.value && isNaN(val)) {return false;}

	this.selected[base] = 0;

	if (!isNaN(who.value) || (notRequired && !isNaN(req.value))) {

		if (!isNaN(val) && !isNaN(valReq)) { // both have values
			if (required == ':LSS:') {
				if (val > valReq) {
					this.load();
				} else {
					this.selected[base] = who.id + val + required + valReq;
				}
			} else {
				if (val <= valReq) {
					this.load();
				} else {
					this.selected[base] = req.id + valReq + ':' + who.id.split(":")[1] +':'+ val;
				}
			}
		} else if (notRequired) {
			if (who.value && !isNaN(who.value)) { // action element has value
				this.selected[base] = who.id + val;
			} else if (valReq && !isNaN(valReq)) { // other value
				this.selected[base] = req.id + valReq;
			}
		}
	}
	window.clearTimeout(this.loadTimeID);
	this.loadTimeID = window.setTimeout("screener.load();",1000);
}

screener.prototype.updateResults = function(value) {
  if(!value){value = 0;}
  this.totalResults = value;
  
	this.screenResults.innerHTML = "View " + value + " Matches";
	this.screenResults1.innerHTML = "View " + value + " Matches";
	if (value == 0) {
    this.zeroMatches.style.display = "block";
    this.zeroMatches1.style.display = "block";
    this.totalBtn.style.display = "none";
    this.totalBtn1.style.display = "none";
		if (this.initSelectedFlag) {
			//alert("no additional matches found");
		} else {
			this.initSelectedFlag = 1;
		}
	}
  else{
    this.zeroMatches.style.display = "none";
    this.zeroMatches1.style.display = "none";
    this.totalBtn.style.display = "block";
    this.totalBtn1.style.display = "block";
  }
}

screener.prototype.updateMatches = function(who,value,criteria_value) {
	if (this.criteriaJS[who].relate) {
		var ele = document.getElementById(this.criteriaJS[who].relate+'_matches');
		var topicEle = this.criteriaJS[who].relate;
	} else {
		var ele = document.getElementById(who+'_matches');
		var topicEle = who;
	}
	try{ele.innerHTML = value + '<p>Matches</p>';}catch(e){}

    if (this.criteriaJS[who].relate) {
        var ele = document.getElementById(this.criteriaJS[who].relate+'_criteriaMatches');
    } else {
        var ele = document.getElementById(who+'_criteriaMatches');
    }   
    try{ele.innerHTML = criteria_value + '<p>Matches</>';}catch(e){}
}

screener.prototype.viewresults = function() {
	document.location = 'fund_screener_results.asp?c='+this.qs;
}

function initScreener(){
	screener = new screener();
  screener.setSavedJS();
  screener.totalResults = 0;
  initButtonFunctions();
  screener.initDisplayRows(); 
}
Events.add({element: window,type: "load",handler: initScreener});

function initButtonFunctions() {
	this.screener_div = Element.get("screener");
	this.button_containers = Element.parseSelector(".button_container", this.screener_div);
	
	for(var i in this.button_containers) {
		this.aArray = this.button_containers[i].getElementsByTagName("a");
	  for(var j = 0; j < this.aArray.length; j++) {
	  	Events.add({element: this.aArray[j],type: "click",handler: transferData});
	  }
	}
	
	this.button_option_containers = Element.parseSelector(".button_options_container", this.screener_div);
	
	for(var n in this.button_option_containers) {
    this.oArray = this.button_option_containers[n].getElementsByTagName("a");
    this.prefix = this.button_option_containers[n].id.split(":");
    this.prefix = this.prefix[1];
    for(var k = 0; k < this.oArray.length; k++) {
    	Events.add({element: this.oArray[k],type: "click",handler: transferOptionData,data:{prefix: this.prefix}});
    }
	}
	
	this.button_close_rows = Element.parseSelector(".closeRow", this.screener_div);
	
	for(var h in this.button_close_rows) {
    Events.add({element: this.button_close_rows[h],type: "click",handler: transferCloseData});	    
	}
	
	this.selector_div = Element.get("sBox");
	this.header_links  = Element.parseSelector(".sHeader", this.selector_div);
	
	for(var i in this.header_links) {
    Events.add({element: this.header_links[i],type: "click",handler: transferSelectorData});
	}
	Events.add({element: Element.get("screenResults"),type: "click",handler: transferResultsView});
  Events.add({element: Element.get("screenResults1"),type: "click",handler: transferResultsView});
}

function transferData(event, el) {
  screener.set(el, 'button');
}

function transferOptionData(event, el, data) {
  screener.toggleChoice(el, data.prefix);
}

function transferCloseData(event,el) {
  screener.toggleRow(el);
}

function transferSelectorData(event,el) {
	screener.expandSectionList(el);
}

function transferResultsView() {
  screener.viewResults();
}