/*

This file contains module store/render methods specific to the screener in this folder

*/


Screener_class.prototype.results_symbolRolloverContent = function(symbolData) {

	var width = 240;
	var height = 100;
	var xaxis = 34;
	var chartSrc = buildAbsolutePath('/tools/charts/microchart.asp?symbol='+ symbolData.ticker +'&timeframe=6mo&interval=1dy&width='+ width +'&height='+ height +'&xaxisfixedwidth='+xaxis + '&showSymbol=false');
	symbolData.chart = Element.create("img", {"src":chartSrc, "width":width, "height":height, "alt":"Loading chart for "+ symbolData["name"]});
	var content = Element.create("div", {"id":"microChart"},[
		Element.create("h3", {}, [
			symbolData["name"],
			" ",
			Element.create("span", {}, ["(", symbolData.ExchangeID_format, ":", Element.create("span", {}, symbolData.ticker), ")"])
		]),
		Element.create("div", {"class":"category"}, ["Category: ", Element.create("span", {}, symbolData.Category)]),
		Element.create("div", {"class":"price"}, [
			"Last: ",
			Element.create("span", {"style":"font-weight:bold"}, symbolData.PriceCurrent_format),
			Element.create("span", {"style":"margin-left: 10px;margin-right:5px;"}, symbolData.PriceDlrChgSinceMarketOpen_formatChart),
			Element.create("span", {}, symbolData.PricePctChgSinceMarketOpen_formatChart),
			Element.create("span", {}, (symbolData.Realtime?'':'<img class="icon" src="https://tdameritrade.cache.wallst.com/images/icons/icn_delayed.gif"/>'))
		]),
		//this.buildChangeLabel({label: "Last: ", price: (symbolData.Realtime?symbolData.PriceCurrent_format:symbolData.PriceCurrent_format), change: symbolData.PriceDlrChgSinceMarketOpen_format, changePercent: symbolData.PricePctChgSinceMarketOpen_format}),
		Element.create("div", {"id":"chart"}, symbolData.chart),
		Element.create("p", {}, ["Based on last " + (symbolData.Realtime?'':'delayed')+" trade at ", symbolData.LastTradeTime_format])
	]);
	return content;
	
	
	//return Element.create("div",{},recurseObject({o:symbolData,nowrite:1}));
}


Screener_class.prototype.GUI_renderCriterion_MorningstarStyleBoxes = function(criterion,rowCriteria,criteriaContainer,titleContainer) {

	// build single select for style box type
	var selectData = this.getDatum("MorningstarStyleBoxes");

	var select = Element.buildSelect({selected:rowCriteria.field,data:selectData},{layoutInput:"layoutInput",style:"display:block; margin-bottom:5px;"},criteriaContainer);
	Events.add({element:select,type:"change",context:this,handler:this.GUI_MorningstarStyleBoxesUpdateSelect});

	rowCriteria.field = select.value;

	Element.setHTML(Element.parseSelector("span",titleContainer,"first"),"Morningstar Style Boxes");

	var selectData = this.getDatum(rowCriteria.field);

	// remove LIKE operator from selected values
	var values = rowCriteria.values.join("{}");
	values = values.replace(/LIKE,/g,"");
	values = values.split("{}");

	// build multi-select for style box options
	var select = Element.buildSelect({selected:values,data:selectData},{id:"MorningstarStyleBox",layoutInput:"layoutInput",multiple:"multiple",size:criterion.moduleSize||10,style:"width:240px"},criteriaContainer);

}



Screener_class.prototype.GUI_MorningstarStyleBoxesUpdateSelect = function(e,el,data) {

	// Update the Style Box options based on the selected type
	var selectData = this.getDatum(el.value);
	Element.buildSelect({selected:null,data:selectData},{id:"MorningstarStyleBox"});


}

Screener_class.prototype.GUI_storeCriterion_MorningstarStyleBoxes = function(criterion,rowCriteria,criteriaContainer) {
	
	var selects = Element.parseSelector("*[layoutInput]",criteriaContainer)

	// set the field based on the selected type
	rowCriteria.field = selects[0].value;

	// get selected style box values
	var options = selects[1].getElementsByTagName("option");

	for (var x=0; x<options.length;x++) {
		if (options[x].selected) {
			rowCriteria.values.push("LIKE," + (options[x].value || options[x].text));
		}
	}

}



// THIS lives in Screener_class.criteria.js as it is shared with ETFs
// Screener_class.prototype.GUI_renderCriterionSub_Pricevs52w





Screener_class.prototype.GUI_renderCriterionSub_MovingAvg = function(criterion,rowCriteria,criteriaContainer) {

	// NOTE: Above/Below value is stored by _buttons module

	var fieldValues = this.deconstructFieldName(rowCriteria.field,criterion.fieldPattern,criterion.fieldPatternDefaults);
	//console.info("MovingAvg fieldValues",fieldValues)

	this.GUI_setCriteriaInputValues(criteriaContainer,{1:fieldValues[0]});

}


Screener_class.prototype.GUI_storeCriterionSub_MovingAvg = function(criterion,rowCriteria,criteriaContainer) {

	// NOTE: Above/Below value is retrieved by _buttons module

	var layoutInputs = Element.parseSelector("*[layoutInput]",criteriaContainer);

	var inputValues = [layoutInputs[0].value,layoutInputs[1].value];

	rowCriteria.field = this.constructFieldName(criterion.fieldPatternOrder,inputValues);

}


Screener_class.prototype.GUI_renderCriterionSub_MovingAvgCrossovers = function(criterion,rowCriteria,criteriaContainer) {


	var fieldValues = this.deconstructFieldName(rowCriteria.field,criterion.fieldPattern,criterion.fieldPatternDefaults);
	//console.info("MovingAvg fieldValues",fieldValues)


	var aboveBelow = "above";
	var timeframe = 1;

	var isNegative = this.isCriteriaNegative(rowCriteria);
	if (isNegative) {
		aboveBelow = "below";
		rowCriteria = this.reverseCriteria(rowCriteria);
	}

	if (rowCriteria.values.length > 1) {
		rowCriteria.values.shift(); // remove the first value as it is GEQ,1 and not relevant
	}
	//console.info("MAC rowCriteria.values",rowCriteria.values)

	// get the last character of the value for the timeframe (or the default of 1)
	var timeframe = rowCriteria.values[0] ? (rowCriteria.values[0].charAt(rowCriteria.values[0].length-1)) : 1;

	//console.info("MAC input values",{0:fieldValues[0],1:aboveBelow,2:fieldValues[1],3:timeframe});

	this.GUI_setCriteriaInputValues(criteriaContainer,{0:fieldValues[0],1:aboveBelow,2:fieldValues[1],3:timeframe});



}


Screener_class.prototype.GUI_storeCriterionSub_MovingAvgCrossovers = function(criterion,rowCriteria,criteriaContainer) {


	var layoutInputs = Element.parseSelector("*[layoutInput]",criteriaContainer);

	var inputValues = [layoutInputs[0].value,layoutInputs[1].value,layoutInputs[2].value,layoutInputs[3].value];
	//console.info("MAC inputValues",inputValues)

	rowCriteria.field = this.constructFieldName(criterion.fieldPatternOrder,inputValues);


	if (inputValues[3] == 1) { // current session
		rowCriteria.values = ["EQU,1"];
	}
	else {
		rowCriteria.values = ["GEQ,1|LEQ,"+inputValues[3]];
	}

	if (inputValues[1] == "below") {
		rowCriteria = this.reverseCriteria(rowCriteria);
	}


	//recurseObject({o:rowCriteria,console:1,n:"MAC rowCriteria"})

}



Screener_class.prototype.GUI_renderCriterionSub_RateOfChange = function(criterion,rowCriteria,criteriaContainer) {

	// NOTE: buttons are selected by _buttons module

	// deconstruct field and populate input values
	var fieldValues = this.deconstructFieldName(rowCriteria.field,criterion.fieldPattern,criterion.fieldPatternDefaults);
	//console.info("ROC values",fieldValues)

	this.GUI_setCriteriaInputValues(criteriaContainer,{0:fieldValues[0]});

}



Screener_class.prototype.GUI_storeCriterionSub_RateOfChange = function(criterion,rowCriteria,criteriaContainer) {
	// get input values and construct screener field

	var layoutInputs = Element.parseSelector("*[layoutInput]",criteriaContainer);

	var inputValues = [layoutInputs[0].value];
	//console.info("ROC values",inputValues)
	//console.info("ROC criteria",rowCriteria)

	rowCriteria.field = this.constructFieldName(criterion.fieldPatternOrder,inputValues);

	// NOTE: rowCriteria.values are stored by the _buttons

}



Screener_class.prototype.GUI_renderCriterionSub_MACD = function(criterion,rowCriteria,criteriaContainer) {

	// NOTE: buttons are selected by _buttons module

	// deconstruct field and populate input values
	var fieldValues = this.deconstructFieldName(rowCriteria.field,criterion.fieldPattern,criterion.fieldPatternDefaults);
	//console.info("MACD values",fieldValues)

	this.GUI_setCriteriaInputValues(criteriaContainer,{0:fieldValues[1],1:fieldValues[0]});

}



Screener_class.prototype.GUI_storeCriterionSub_MACD = function(criterion,rowCriteria,criteriaContainer) {
	// get input values and construct screener field

	var layoutInputs = Element.parseSelector("*[layoutInput]",criteriaContainer);

	var inputValues = [layoutInputs[0].value,layoutInputs[1].value];
	//console.info("MACD values",inputValues)
	//console.info("MACD criteria",rowCriteria)

	rowCriteria.field = this.constructFieldName(criterion.fieldPatternOrder,inputValues);
	//console.info("MACD field",rowCriteria.field)
	// NOTE: rowCriteria.values are stored by the _buttons

}


Screener_class.prototype.GUI_renderCriterionSub_Dividends = function(criterion,rowCriteria,criteriaContainer) {

	this.GUI_renderCriterionSub_MACD(criterion,rowCriteria,criteriaContainer);
}



Screener_class.prototype.GUI_storeCriterionSub_Dividends = function(criterion,rowCriteria,criteriaContainer) {

	this.GUI_storeCriterionSub_MACD(criterion,rowCriteria,criteriaContainer);

	rowCriteria.values = ["GTR,0"];

}


Screener_class.prototype.GUI_renderCriterionSub_OBV = function(criterion,rowCriteria,criteriaContainer) {
	
	var fieldValues = this.deconstructFieldName(rowCriteria.field,criterion.fieldPattern,criterion.fieldPatternDefaults);
	
	//console.info("render: " + fieldValues);

	this.GUI_setCriteriaInputValues(criteriaContainer,{0:fieldValues[0]});
}

Screener_class.prototype.GUI_storeCriterionSub_OBV = function(criterion,rowCriteria,criteriaContainer) {

	var layoutInputs = Element.parseSelector("*[layoutInput]",criteriaContainer);

	var inputValues = [layoutInputs[0].value];
	
	//console.info("store: " + inputValues);

	rowCriteria.field = this.constructFieldName(criterion.fieldPatternOrder,inputValues);

}