
function fill_current_stock_data(){
	new Ajax.Request(URL_STOCK_DATA, {
	method: "get",
	onSuccess: register_stock_data_apps
	});

}

function register_stock_data_apps(vobj_Doc){
	var larr_Containers = new Array(
	new Array("id-stock-quick-info","fill_current_stock_data_handler"),
	new Array("id-stock-chart-mini","fill_stock_data_mini_handler"),
	new Array("id-stock-info-overview","fill_stock_data_overview_handler")
	)
	$A(larr_Containers).each(function(containers) {
		if(element_exists(containers[0])){
			eval(containers[1] + "(vobj_Doc)");
		}
	});


}

function fill_current_stock_data_handler(vobj_Doc) {

	var lobj_Root = vobj_Doc.responseXML;
	var lstr_Price = lobj_Root.getElementsByTagName("Trade")[0].childNodes[0].nodeValue;
	var lstr_Change = lobj_Root.getElementsByTagName("Change")[0].childNodes[0].nodeValue;

	inner_html("id-stock-price-change",format_price_change(lstr_Change));
	inner_html("id-stock-price",lstr_Price);

}

function fill_stock_data_mini_handler(vobj_Doc) {

	var lobj_Root = vobj_Doc.responseXML;
	var lstr_Price = lobj_Root.getElementsByTagName("Trade")[0].childNodes[0].nodeValue;
	var lstr_PreviousClose = lobj_Root.getElementsByTagName("PreviousClose")[0].childNodes[0].nodeValue;
	var lstr_Change = lobj_Root.getElementsByTagName("Change")[0].childNodes[0].nodeValue;
	var lstr_Volume = lobj_Root.getElementsByTagName("Volume")[0].childNodes[0].nodeValue;
	//var lstr_RollingEps = 1.24; //lobj_Root.getElementsByTagName("RollingEPS")[0].childNodes[0].nodeValue;
	//FixedEPS maintained in  /Style%20Library/WesternGas/QuotesXML.XSL
	var lstr_RollingEps = lobj_Root.getElementsByTagName("FixedEPS")[0].childNodes[0].nodeValue;

	var lstr_ChangePercent = get_change_percent(lstr_Change,lstr_PreviousClose);

	inner_html("id-chart-stock-price",lstr_Price);
	inner_html("id-chart-stock-change",format_change_percent(lstr_ChangePercent));
	inner_html("id-chart-stock-volume",format_volume(lstr_Volume));
	inner_html("id-chart-stock-yield",format_change_percent(get_change_percent(lstr_RollingEps,lstr_PreviousClose)));

}

function format_volume(vstr_Volume){
	var lint_Volume = parseInt(vstr_Volume);
	var lstr_VolumeSuffix = "";
	if(lint_Volume > 1000000){ //A million or greater
		lint_Volume = Math.round(lint_Volume/100000)/10;
		lstr_VolumeSuffix = "MM";
	}else{ //Less than a million
		lint_Volume = Math.round(lint_Volume/1000);
		lstr_VolumeSuffix = "M";	
	}

	return lint_Volume.toString() + lstr_VolumeSuffix;
}
function format_change_percent(vstr_Value){


	var lstr_Return;
	if(parseFloat(vstr_Value) > 0){
		lstr_Return = "<span style=\"color:#0a9b10;\">+" + vstr_Value + "%</span>";
	}else{
		if(parseFloat(vstr_Value) <= 0){
			lstr_Return = vstr_Value + "%";		
		}
	}
	
	return lstr_Return;
}
function fill_stock_data_overview_handler(vobj_Doc){
	
	var lobj_Root = vobj_Doc.responseXML;


	var lstr_Price = lobj_Root.getElementsByTagName("Trade")[0].childNodes[0].nodeValue;
	var lnum_Price = parseFloat(lstr_Price);
        inner_html("id-stock-overview-price",lstr_Price);

	var lstr_ChangePrefix = "+ ";
	var lstr_Change = lobj_Root.getElementsByTagName("Change")[0].childNodes[0].nodeValue;
	var lnum_Change = parseFloat(lstr_Change);
	if(lnum_Change < 0){
		document.getElementById("id-stock-overview-change").style.color = "#616161";
		document.getElementById("id-stock-overview-percent-change").style.color = "#616161";
		lstr_ChangePrefix = "- ";
	}
	inner_html("id-stock-overview-change",format_price_change(lstr_Change));
	
	var lstr_Volume = lobj_Root.getElementsByTagName("Volume")[0].childNodes[0].nodeValue;
	var lint_Volume = format_number(parseInt(lstr_Volume),"");
			inner_html("id-stock-overview-volume",lint_Volume.toString());
	
	var lstr_PercentChange = get_change_percent(lstr_Change,lstr_Price);
			inner_html("id-stock-overview-percent-change",(lstr_PercentChange) + "%");
	
	var lstr_IntradayHigh = lobj_Root.getElementsByTagName("High")[0].childNodes[0].nodeValue;
			inner_html("id-stock-overview-intraday-high",lstr_IntradayHigh);
	
	var lstr_52WeekHigh = lobj_Root.getElementsByTagName("FiftyTwoWeekHigh")[0].childNodes[0].nodeValue;
			inner_html("id-stock-overview-52week-high",lstr_52WeekHigh);
	
	var lstr_IntradayLow = lobj_Root.getElementsByTagName("Low")[0].childNodes[0].nodeValue;
			inner_html("id-stock-overview-intraday-low",lstr_IntradayLow);
	
	var lstr_52WeekLow = lobj_Root.getElementsByTagName("FiftyTwoWeekLow")[0].childNodes[0].nodeValue;
			inner_html("id-stock-overview-52week-low",lstr_52WeekLow);
	
	var lstr_Open = lobj_Root.getElementsByTagName("Open")[0].childNodes[0].nodeValue;
			inner_html("id-stock-overview-todays-open",lstr_Open);
	
	var lstr_Close = lobj_Root.getElementsByTagName("PreviousClose")[0].childNodes[0].nodeValue;
			inner_html("id-stock-overview-close",lstr_Close);
	
	var lstr_Date = lobj_Root.getElementsByTagName("Date")[0].childNodes[0].nodeValue;
			inner_html("id-stock-overview-date",lstr_Date);
	

}

function format_price_change(vstr_Change){
	var lstr_Sign = "";
	var lstr_Change = vstr_Change;
	if(vstr_Change > 0){
		lstr_Sign = "+ ";
	}else{
		lstr_Sign = "";
		lstr_Change = lstr_Change.replace("-","- ");
		lstr_Change = "<span style=\"color:#616161;\">" + lstr_Change + "</span>";
	}
	
	return lstr_Sign + lstr_Change;
}

function get_change_percent(vstr_Change, vstr_CurrentPrice){
	var lnum_Change = parseFloat(vstr_Change);
	var lnum_Price = parseFloat(vstr_CurrentPrice);
	var lstr_Return = "0";
	if(lnum_Change != 0){
			if(lnum_Price == 0) lnum_Price = 1; //prevents dividebyzero errors

		try{
			var lstr_Sign = "";
			if(lnum_Change<0) lstr_Sign = "-";
			var lnum_PercentageChange = (lnum_Change/lnum_Price) * 100;//23.45678...

			lstr_Return = lstr_Sign + (format_number(lnum_PercentageChange,2,",",".").toString()); 

		}catch(err){
			lstr_Return = "0";
		}
	}
	

	return lstr_Return;
}




function fill_hist_quote(){

	var lstr_DateQuery = document.getElementById("id-hist-date").value;
	var mstr_HistoryQuote = PATH_HISTORY_QUOTE + "reqdate=" + lstr_DateQuery + "|symb=" + STOCK_TICKER;

	new Ajax.Request(mstr_HistoryQuote, {
	method: "get",
	onSuccess: register_hist_quote_apps
	});
}
function register_hist_quote_apps(vobj_Doc){

	var larr_Containers = new Array(
	new Array("id-history-quote-table","fill_hist_quote_table")
	)

	$A(larr_Containers).each(function(containers) {
									  
		if(element_exists(containers[0])){
			eval(containers[1] + "(vobj_Doc)");
		}
	});
}

function fill_hist_quote_table(vobj_Doc){

	var lobj_Root = vobj_Doc.responseXML;
	var lstr_Bid 		= lobj_Root.getElementsByTagName("Bid")[0].childNodes[0].nodeValue;
	var lstr_Ask 		= lobj_Root.getElementsByTagName("Ask")[0].childNodes[0].nodeValue;
	var lstr_High 		= lobj_Root.getElementsByTagName("High")[0].childNodes[0].nodeValue;
	var lstr_Low 		= lobj_Root.getElementsByTagName("Low")[0].childNodes[0].nodeValue;
	var lstr_Volume 	= lobj_Root.getElementsByTagName("Volume")[0].childNodes[0].nodeValue;
	var lstr_Open 		= lobj_Root.getElementsByTagName("Open")[0].childNodes[0].nodeValue;
	var lstr_SharesOutstanding = lobj_Root.getElementsByTagName("SharesOutstanding")[0].childNodes[0].nodeValue;
	var lstr_Last 		= lobj_Root.getElementsByTagName("Last")[0].childNodes[0].nodeValue;
	var lstr_AdjustmentFactor = lobj_Root.getElementsByTagName("AdjustmentFactor")[0].childNodes[0].nodeValue;
	var lstr_RollingEarnings = lobj_Root.getElementsByTagName("RollingEarnings")[0].childNodes[0].nodeValue;
	var lstr_ShortInterest = lobj_Root.getElementsByTagName("ShortInterest")[0].childNodes[0].nodeValue;
	
	var lstr_Date = lobj_Root.getElementsByTagName("HistoricalQuotes")[0].getAttribute("Date");
	
	
	inner_html("id-hist-quote-high",lstr_High);
	inner_html("id-hist-quote-low",lstr_Low);
	inner_html("id-hist-quote-open",lstr_Open);
	inner_html("id-hist-quote-volume",lstr_Volume);
	inner_html("id-hist-quote-close",lstr_Last);
	inner_html("id-hist-quote-date",format_date_thompson(lstr_Date));
}

function format_date_thompson(vstr_Date){

	var mstr_DateReturn;
	var marr_Date = vstr_Date.split("/");
	if(marr_Date.length == 3){
		mstr_DateReturn = monthArray[marr_Date[0]-1] + " " + marr_Date[1] + ", " + marr_Date[2];
	}else{
		alert("not enough params");	
	}
	
	return mstr_DateReturn;
	
}


function format_number(num,dec,thou,pnt) 
{
var x = Math.round(num * Math.pow(10,dec));
if (x >= 0) n1=n2='';
var y = (''+Math.abs(x)).split('');
var z = y.length - dec;
if (z<0) z--;
for(var i = z; i < 0; i++) 
y.unshift('0');
y.splice(z, 0, pnt);
if(y[0] == pnt) y.unshift('0');
while (z > 3) 
{
z-=3;
y.splice(z,0,thou);
} 
var r = y.join('');
return r;
}
