//load all graphs and templates
function loadPics()
{
	var ocp_spacer_contents = "";
	var ind_spacer_contents = "";

	ocp_spacer_contents += "<img id='ocp_temp' src='" + pic_temp[2].src + "' style='position: absolute; z-index: 0; left: 0; top: 0; visibility: visible'>";
	ocp_spacer_contents += ocp_table;
	ocp_spacer_contents += "<img id='ocp_graph' src='" + pic_ocp[0].src + "' galleryimg='no' style='position: absolute; left: 0; z-index: 2; visibility: visible' onMouseMove=updateData()>";
	ocp_spacer_contents += "<img id='ocp_avg' src='" + pic_ocp[1].src + "' style='position: absolute; left: 0; top: 0; z-index: 3; visibility: hidden' onMouseMove=updateData()>";
	ind_spacer_contents += "<img id='ind_region_rsi' src='" + pic_temp[3].src + "' style='position: absolute; top: 0; left: 0; z-index: -1; visibility: hidden'>";
	ind_spacer_contents += "<img id='ind_region_ssto' src='" + pic_temp[4].src + "' style='position: absolute; top: 0; left: 0; z-index: -1; visibility: hidden'>";
	ind_spacer_contents += "<img id='ind_region_fsto' src='" + pic_temp[4].src + "' style='position: absolute; top: 0; left: 0; z-index: -1; visibility: hidden'>";
	ind_spacer_contents += ind_table;

	for(p=0; p<pic_name.length; p++){
		ind_spacer_contents += "<img id='ind_temp_" + pic_name[p].name + "' src='" + pic_temp[0].src + "' style='position: absolute; left: 0; top: 0; z-index: 0; visibility: hidden'>";
		ind_spacer_contents += "<img id='ind_blank_" + pic_name[p].name + "' src='" + pic_temp[1].src + "' style='position: absolute; left: 0; top: 0; z-index: 2; visibility: hidden'>";
		ind_spacer_contents += "<img id='ind_chart_" + pic_name[p].name + "' src='" + pic_name[p].src + "' style='position: absolute; left: 0; top: 0; z-index: 3; visibility: hidden' onMouseMove=updateData()>";
	}


	document.getElementById("ocp_spacer").innerHTML = ocp_spacer_contents;
	document.getElementById("ind_spacer").innerHTML = ind_spacer_contents;
	document.getElementById("ocp_spacer").style.width = image_width;
	document.getElementById("ocp_spacer").style.height = image_height;
	document.getElementById("ind_spacer").style.height = "0px";

	if(isNS6){
		document.getElementById("ocp_graph").onmousemove = updateData;
		for(p=0; p<pic_name.length; p++){
			document.getElementById("ind_chart_" + pic_name[p].name).onmousemove = updateData;
		}
	}

	//after loading the charts, display any previously viewed indicators
	maintainIndicators(document.ocp_chart);
	loadLastData();
}


function loadLastData()
{
	var data_value = data[0];
	if(data_value){
		var values = data_value.split("|");
		var font_type = "header";
		if(values[7] > 0)
			font_type = "up_quote";
		else if(values[7] < 0)
			font_type = "dn_quote";

		document.getElementById("last_date").innerHTML = "<strong>"+values[0]+"</strong>";
		document.getElementById("last_open").innerHTML = "<font class='"+font_type+"'>"+values[1]+"</font>";
		document.getElementById("last_high").innerHTML = "<font class='"+font_type+"'>"+values[2]+"</font>";
		document.getElementById("last_low").innerHTML = "<font class='"+font_type+"'>"+values[3]+"</font>";
		document.getElementById("last_close").innerHTML = "<font class='"+font_type+"'>"+values[4]+"</font>";
		document.getElementById("last_change").innerHTML = "<font class='"+font_type+"'>"+values[7]+"</font>";
	}
}


function updateData(ref){

//sample code to calculate the Netscape 6 equiv to IE's Event.offsetX/offsetY
//	var Element = evt.target;
// var CalculatedTotalOffsetLeft = CalculatedTotalOffsetTop = 0;
//	while (Element.offsetParent) {
//		CalculatedTotalOffsetLeft += Element.offsetLeft;
//		CalculatedTotalOffsetTop += Element.offsetTop;
//		Element = Element.offsetParent;
//	}
//	OffsetXForNS6 = evt.pageX - CalculatedTotalOffsetLeft;
//	OffsetYForNS6 = evt.pageY - CalculatedTotalOffsetTop ;

	if(isNS6){
//		var element = ref.target;
//		var calLeft = calTop = 0;

//		while (element.offsetParent){
//			calLeft += element.offsetLeft;
//			calTop += element.offsetTop;
//		}

//		var coordX = ref.pageX - calLeft;
//		var coordY = ref.pageY - calTop;

		return(1);
		var coordX = ref.screenX + window.pageXOffset + 5;
		var coordY = ref.screenY - (document.getElementById("ocp_spacer").screenTop);
		//alert(coordX);
	} else {
		var coordX = event.offsetX + (spacer * days_offset) - (days_offset * .5);
		var coordY = event.offsetY;
		//alert(coordX);
	}

	var cursor_price = max_high - ((coordY - title_bar_height) / tick_scale);
	if((cursor_price % minmove) >= (minmove / 2))
		cursor_price -= (cursor_price % minmove);
	else if((cursor_price % minmove) < (minmove / 2))
		cursor_price -= (cursor_price % minmove) + minmove;

	//window.status = "coordX: "+coordX+" coordY "+coordY;
	var reference = parseInt((chart_width - coordX) / spacer) - 1;

	if(coordX < chart_width && reference >= 0 && price_mark > 0) {
		//window.status = reference;
		var data_value = data[ reference ];
		if(data_value){
			values = data_value.split("|");
			document.getElementById("cursor_date").innerHTML = values[0];
			document.getElementById("cursor_open").innerHTML = values[1];
			document.getElementById("cursor_high").innerHTML = values[2];
			document.getElementById("cursor_low").innerHTML = values[3];
			document.getElementById("cursor_close").innerHTML = values[4];
			document.getElementById("cursor_vol").innerHTML = values[5];
			document.getElementById("cursor_oi").innerHTML = values[6];
			document.getElementById("cursor_change").innerHTML = values[7];

			if(coordY > title_bar_height && coordY < chart_height + title_bar_height){
				document.ocp_chart.price_value.value = cursor_price;
			} else {
				document.ocp_chart.price_value.value = "";
			}

			if(document.ocp_chart.highlight_tick.checked){
				//window.status = "coordX: "+coordX+" % spacer: "+spacer+" = "+(coordX % spacer);
				//if(((coordX % spacer) >= ((spacer-1)/2)) && ((coordX % spacer) <= ((spacer+1)/2))){
				if((coordX % spacer) == 0 || (coordX % spacer) == 1){
					if(isNS6){
						document.getElementById("ocp_highlighter").style.left = (coordX-(spacer*days_offset))+"px";
					} else {
						document.getElementById("ocp_highlighter").style.left = chart_width-((reference+2+days_offset)*spacer)+parseInt(spacer/2);
					}
					document.getElementById("ocp_highlighter").style.top = title_bar_height + 1;
					document.getElementById("ocp_highlighter").style.visibility = 'visible';

					//highlight indicators
					var ind_count=0;
					for(i=0; i<pic_name.length; i++){
						if(document.getElementById("ind_chart_" + pic_name[i].name).style.visibility != 'hidden'){
							ind_count++;
						}
					}

					if(ind_count > 0){
						document.getElementById("ind_highlighter").style.left = document.getElementById("ocp_highlighter").style.left;
						document.getElementById("ind_highlighter").style.visibility = 'visible';
					} else {
						document.getElementById("ind_highlighter").style.visibility = 'hidden';
					}
				}
			} else {
				document.getElementById("ocp_highlighter").style.visibility = 'hidden';
				document.getElementById("ind_highlighter").style.visibility = 'hidden';
			}
		}
	} else {
		document.getElementById("cursor_date").innerHTML = "";
		document.getElementById("cursor_open").innerHTML = "";
		document.getElementById("cursor_high").innerHTML = "";
		document.getElementById("cursor_low").innerHTML = "";
		document.getElementById("cursor_close").innerHTML = "";
		document.getElementById("cursor_vol").innerHTML = "";
		document.getElementById("cursor_oi").innerHTML = "";
		document.getElementById("cursor_change").innerHTML = "";
		document.ocp_chart.price_value.value = "";
	}
}


function updateHighlight(){

	//Turn Highligher on for graph and indicators
	if(document.getElementById("ocp_highlighter").style.visibility == 'hidden'){
		document.getElementById("ocp_highlighter").style.visibility = 'visible';

		var found=0;
		for(i=0; i<pic_name.length; i++){
			if(document.getElementById("ind_chart_" + pic_name[i].name).style.visibility != 'hidden'){
				found++;
			}
		}

		//If the indicators are tiled, then expand the highligher to all indicators
		if(document.ocp_chart.show_ind[0].checked){
			if(found > 0){
				document.getElementById("ind_highlighter").style.height = (indicator_height * found) - 2;
				document.getElementById("ind_highlighter").style.left = document.getElementById("ocp_highlighter").style.left;
				document.getElementById("ind_highlighter").style.visibility = 'visible';
			}
		} else {
			if(found > 0){
				document.getElementById("ind_highlighter").style.height = indicator_height - 2;
				document.getElementById("ind_highlighter").style.left = document.getElementById("ocp_highlighter").style.left;
				document.getElementById("ind_highlighter").style.visibility = 'visible';
			}
		}			

	//Turn Highlighter off for graph and indicators
	} else {
		document.getElementById("ocp_highlighter").style.visibility = 'hidden';
		document.getElementById("ind_highlighter").style.visibility = 'hidden';
	}
}


function maintainHighlight(){

	//Leave Highligher on for graph and indicators
	if(document.ocp_chart.highlight_tick.checked){
		document.getElementById("ocp_highlighter").style.visibility = 'visible';

		//Tiled Indicators
		if(document.ocp_chart.show_ind[0].checked){
			var found=0;
			for(i=0; i<pic_name.length; i++){
				if(document.getElementById("ind_chart_"+pic_name[i].name).style.visibility != 'hidden') found++;
			}

			if(found > 0){
				document.getElementById("ind_highlighter").style.height = (indicator_height * found)-2;
				document.getElementById("ind_highlighter").style.left = document.getElementById("ocp_highlighter").style.left;
				document.getElementById("ind_highlighter").style.visibility = 'visible';
			} else {
				document.getElementById("ind_highlighter").style.visibility = 'hidden';
			}

		//Layered Indicators
		} else {
			var found=0;
			for(i=0; i<pic_name.length; i++){
				if(document.getElementById("ind_chart_" + pic_name[i].name).style.visibility != 'hidden'){
					found++;
				}
			}

			if(found > 0){
				document.getElementById("ind_highlighter").style.left = document.getElementById("ocp_highlighter").style.left;
				document.getElementById("ind_highlighter").style.visibility = 'visible';
			} else {
				document.getElementById("ind_highlighter").style.visibility = 'hidden';
			}

			document.getElementById("ind_highlighter").style.height = indicator_height - 2;
		}

	//Leave Highlighter off for graph and indicators
	} else {
		document.getElementById("ocp_highlighter").style.visibility = 'hidden';
		document.getElementById("ind_highlighter").style.visibility = 'hidden';
	}
}


//Turn Moving Averages on or off
function updateMovingAverage(mv_avg){
	if(document.getElementById("ocp_avg").style.visibility == 'hidden'){ 
		document.getElementById("ocp_avg").style.visibility = 'visible'; }
	else { document.getElementById("ocp_avg").style.visibility = 'hidden'; }
}


//Tile or Layer the Indicators below the main graph if it exists
function updateIndicator(ref) {
	if(document.getElementById("ocp_graph")){
		if(document.ocp_chart.show_ind[0].checked){ tileIndicators(ref); }
		else { layerIndicators(ref); }

		maintainHighlight();
	}
}




//maintains which indicators are shown when a chart is reset
function maintainIndicators(form){

	//structured: expMA,tile/layer,voloi,fsto,ssto,macd,rsi
	var indicators = "";

	if(GetCookie("ocp_indicators") == null){
		indicators = "0,1,0,0,0,1,0,0";
	} else {
		indicators = GetCookie("ocp_indicators");
	}

	//alert("Reloading: " + indicators);
	var indicator_values = indicators.split(",");

	//highlighter
	if(indicator_values[0] == 1){
		document.ocp_chart.highlight_tick.checked = true;
		maintainHighlight();
	} else {
		document.ocp_chart.highlight_tick.checked = false;
	}

	//Moving Average
	if(indicator_values[1] == 1){
		document.ocp_chart.ExpMvAvgs.checked = true;
		updateMovingAverage();
	} else {
		document.ocp_chart.ExpMvAvgs.checked = false;
	}

	//determine if the indicators should be tiled or layered
	if(indicator_values[2] == 1)
		form.show_ind[1].checked = true;
	else
		form.show_ind[0].checked = true;
		
	//turn on any selected indicators
	if(indicator_values[3] == 1){				//volume
		form.VOLOI.checked = true;
		updateIndicator(0);
	} else {
		form.VOLOI.checked = false;
	}
	if(indicator_values[4] == 1){				//fast stochastics
		form.FSTO.checked = true;
		updateIndicator(1);
	} else {
		form.FSTO.checked = false;
	}
	if(indicator_values[5] == 1){				//slow stochastics
		form.SSTO.checked = true;
		updateIndicator(2);
	} else {
		form.SSTO.checked = false;
	}
	if(indicator_values[6] == 1){				//macd
		form.MACD.checked = true;
		updateIndicator(3);
	} else {
		form.MACD.checked = false;
	}
	if(indicator_values[7] == 1){				//rsi
		form.RSI.checked = true;
		updateIndicator(4);
	} else {
		form.RSI.checked = false;
	}
	//Arrange the Indicators correctly: Tiled or Layered
	resetIndicators();
}



function updateChart(field,value)
{
	var expdate = new Date();
	FixCookieDate(expdate);														 //fix date for Macs
	expdate.setTime(expdate.getTime() + (1 * 60 * 60 * 1000));     //1 hour from now

	field.value = value;

	var sym = document.contract_open.symbol.value;
	var mn = document.contract_open.contract_month.value;
	var yr = document.contract_open.contract_year.value;
	var mkt = document.contract_open.market.value;

	var tk = document.ocp_chart.tick_style.value;
	var ct = document.ocp_chart.contract_type.value;
	var mdb = document.ocp_chart.max_date_bars.value;

	var options = tk+","+ct+","+mdb;
	SetCookie("ocp_options",options,expdate,"/");

	document.location = "/processing.cgi?symbol="+sym+"&contract_month="+mn+"&contract_year="+yr+"&market="+mkt+"&tick_style="+tk+"&contract_type="+ct+"&max_date_bars="+mdb;
	//document.ocp_chart.submit();
}



function saveIndicators()
{
	var saved_indicators = "";
	var saved_options = "";
	var expdate = new Date();
	FixCookieDate(expdate);														 //fix date for Macs
	expdate.setTime(expdate.getTime() + (24 * 60 * 60 * 1000));     //24 hours from now

	//check to see if the highlighter is visible, if so save it
	if(document.ocp_chart.highlight_tick.checked){ saved_indicators = "1"; }	//highlighter
	else { saved_indicators = "0"; }

	//check to see if the ExpMA is visible, if so save it
	if(document.ocp_chart.ExpMvAvgs.checked){ saved_indicators += ",1"; }	//EMA
	else { saved_indicators += ",0"; }

	//save how the indicators are displayed layered or tiled
	for(var i=0; i<document.ocp_chart.show_ind.length; i++){
		if(document.ocp_chart.show_ind[i].checked == true)
			saved_indicators += "," + i;
	}

	//save any indicators that are currently displayed
	if(document.ocp_chart.VOLOI && document.ocp_chart.VOLOI.checked){ saved_indicators += ",1"; }	//volume
	else { saved_indicators += ",0"; }

	if(document.ocp_chart.FSTO.checked){ saved_indicators += ",1"; }	//fast stochastics
	else { saved_indicators += ",0"; }

	if(document.ocp_chart.SSTO.checked){ saved_indicators += ",1"; }	//slow stochastics
	else { saved_indicators += ",0"; }

	if(document.ocp_chart.MACD.checked){ saved_indicators += ",1"; }	//macd
	else { saved_indicators += ",0"; }

	if(document.ocp_chart.RSI.checked){ saved_indicators += ",1"; }	//rsi
	else { saved_indicators += ",0"; }

	
	SetCookie("ocp_indicators",saved_indicators,expdate);
	//alert("Saved:" + saved_indicators);
}



//Switch between a Layered and Tiled Indicators
function resetIndicators(){
	var ind_count=0;
	for(p=0; p<pic_name.length; p++){ if(document.getElementById("ind_chart_" + pic_name[p].name).style.visibility != 'hidden' ){ind_count++;} }

	//Only worry about rearranging if there are more than one visible
	if(ind_count > 1){

		//If switched from Layerd to Tiled
		if(document.ocp_chart.show_ind[0].checked){
	
			//Reset Indicators to new locations after removal
			document.getElementById("ind_spacer").style.height = (parseInt(indicator_height) * ind_count) + "px";
			var found=0;
			for(p=0; p<pic_name.length; p++){
				if(document.getElementById("ind_chart_" + pic_name[p].name).style.visibility != "hidden" ){
					document.getElementById("ind_chart_" + pic_name[p].name).style.top = (parseInt(indicator_height) * found);
					document.getElementById("ind_temp_" + pic_name[p].name).style.top = (parseInt(indicator_height) * found);
					document.getElementById("ind_temp_" + pic_name[p].name).style.visibility = 'visible';

					//Turn off regions for stochastics and rsi
					if(p == 1){
						document.getElementById("ind_region_fsto").style.visibility = 'visible';
						document.getElementById("ind_region_fsto").style.top = (parseInt(indicator_height) * found);
					}
					if(p == 2){
						document.getElementById("ind_region_ssto").style.visibility = 'visible';
						document.getElementById("ind_region_ssto").style.top = (parseInt(indicator_height) * found);
					}
					if(p == 4){
						document.getElementById("ind_region_rsi").style.visibility = 'visible';
						document.getElementById("ind_region_rsi").style.top = (parseInt(indicator_height) * found);
					}

					found++;
				}
				document.getElementById("ind_blank_" + pic_name[p].name).style.visibility = 'hidden';
			}

		 //If switched from Tiled to Layered
		} else {

			//Reset Indicators to new locations after removal
			document.getElementById("ind_spacer").style.height = indicator_height + "px";
			last_ind = 0;
			for(p=0; p<pic_name.length; p++){
				if(document.getElementById("ind_chart_" + pic_name[p].name).style.visibility != "hidden" ){
					last_ind = p;
					document.getElementById("ind_blank_" + pic_name[p].name).style.visiblity = 'visible';

					//Turn on regions for stochastics and rsi
					if(p == 1){
						document.getElementById("ind_region_fsto").style.visibility = 'visible';
						document.getElementById("ind_region_fsto").style.top = 0;
					}
					if(p == 2){
						document.getElementById("ind_region_ssto").style.visibility = 'visible';
						document.getElementById("ind_region_ssto").style.top = 0;
					}
					if(p == 4){
						document.getElementById("ind_region_rsi").style.visibility = 'visible';
						document.getElementById("ind_region_rsi").style.top = 0;
					}
				} else {
					document.getElementById("ind_blank_" + pic_name[p].name).style.visiblity = 'hidden';
				}

				//reset all indicators to base levels
				document.getElementById("ind_temp_" + pic_name[p].name).style.top = 0;
				document.getElementById("ind_blank_" + pic_name[p].name).style.top = 0;
				document.getElementById("ind_chart_" + pic_name[p].name).style.top = 0;
				document.getElementById("ind_temp_" + pic_name[p].name).style.zIndex = 0;
				document.getElementById("ind_blank_" + pic_name[p].name).style.zIndex = 1;
				document.getElementById("ind_chart_" + pic_name[p].name).style.zIndex = 2;
				document.getElementById("ind_temp_" + pic_name[p].name).style.visibility = 'hidden';
			}

			//Use the last visible chart to display as the top chart
			document.getElementById("ind_temp_" + pic_name[0].name).style.visibility = 'visible';
			document.getElementById("ind_blank_" + pic_name[last_ind].name).style.visibility = 'visible';
			document.getElementById("ind_blank_" + pic_name[last_ind].name).style.zIndex = 10;
			document.getElementById("ind_chart_" + pic_name[last_ind].name).style.zIndex = 11;
		}
	}
	maintainHighlight();
}


function tileIndicators(ref){
	var ind_count=0;
	for(p=0; p<pic_name.length; p++){
		if(document.getElementById("ind_chart_" + pic_name[p].name).style.visibility != 'hidden'){ ind_count++; }
	}
	if(document.getElementById("ind_chart_" + pic_name[ref].name).style.visibility == "hidden"){ ind_count++; }
	else { ind_count--; }


	//All indicators are off
	if(ind_count <= 0){
		document.getElementById("ind_spacer").style.height = "0px";
		document.getElementById("ind_spacer").style.visibility = "hidden";
		document.getElementById("ind_region_rsi").style.visibility = "hidden";
		document.getElementById("ind_region_fsto").style.visibility = "hidden";
		document.getElementById("ind_region_ssto").style.visibility = "hidden";
		for(p=0; p<pic_name.length;p++){
			document.getElementById("ind_temp_" + pic_name[p].name).style.visibility = "hidden";
			document.getElementById("ind_blank_" + pic_name[p].name).style.visibility = "hidden";
			document.getElementById("ind_chart_" + pic_name[p].name).style.visibility = "hidden";
		}
		document.ocp_chart.ind_remember.value = '';

	//Only one Indicator should be on
	} else if(ind_count == 1) {
		document.getElementById("ind_spacer").style.height = indicator_height + "px";

		//Turning on selected indicator
		if(document.getElementById("ind_chart_" + pic_name[ref].name).style.visibility == 'hidden'){

			document.getElementById("ind_temp_" + pic_name[ref].name).style.top = 0;
			document.getElementById("ind_chart_" + pic_name[ref].name).style.top = 0;
			document.getElementById("ind_spacer").style.visibility = "visible";
			document.getElementById("ind_temp_" + pic_name[ref].name).style.visibility = "visible";
			document.getElementById("ind_chart_" + pic_name[ref].name).style.visibility = "visible";
			document.ocp_chart.ind_remember.value = ref;

			//Turn on regions for stochastics and rsi
			if(ref == 1){
				document.getElementById("ind_region_fsto").style.visibility = 'visible';
				document.getElementById("ind_region_fsto").style.top = 0;
			}
			if(ref == 2){
				document.getElementById("ind_region_ssto").style.visibility = 'visible';
				document.getElementById("ind_region_ssto").style.top = 0;
			}
			if(ref == 4){
				document.getElementById("ind_region_rsi").style.visibility = 'visible';
				document.getElementById("ind_region_rsi").style.top = 0;
			}

			
		} else {

			//Turning off selected indicator
			document.getElementById("ind_temp_" + pic_name[ref].name).style.visibility = "hidden";
			document.getElementById("ind_chart_" + pic_name[ref].name).style.visibility = "hidden";
			document.getElementById("ind_blank_" + pic_name[ref].name).style.visibility = "hidden";

			//Turn off regions for stochastics and rsi
			if(ref == 1){ document.getElementById("ind_region_fsto").style.visibility = 'hidden'; }
			if(ref == 2){ document.getElementById("ind_region_ssto").style.visibility = 'hidden'; }
			if(ref == 4){ document.getElementById("ind_region_rsi").style.visibility = 'hidden'; }

			//Find the last indicator and move it to the top position
			for(p=0; p<pic_name.length; p++){
				if(document.getElementById("ind_chart_" + pic_name[p].name).style.visibility != 'hidden' ){
					document.getElementById("ind_temp_" + pic_name[p].name).style.top = 0;
					document.getElementById("ind_chart_" + pic_name[p].name).style.top = 0;
	
					//Turn off regions for stochastics and rsi
					if(p == 1){ document.getElementById("ind_region_fsto").style.top = 0; }
					if(p == 2){ document.getElementById("ind_region_ssto").style.top = 0; }
					if(p == 4){ document.getElementById("ind_region_rsi").style.top = 0; }
				}
			}
		}

	//More than one Indicator is on
	} else {
		var current_height = document.getElementById("ind_spacer").style.height;

		//Turn the Indicator on
		if(document.getElementById("ind_chart_" + pic_name[ref].name).style.visibility == "hidden"){
			var ind = document.ocp_chart.ind_remember.value;
			document.getElementById("ind_spacer").style.height = (parseInt(indicator_height) * ind_count) + "px";
			document.getElementById("ind_chart_" + pic_name[ref].name).style.top = (parseInt(indicator_height) * (ind_count - 1));
			document.getElementById("ind_temp_" + pic_name[ref].name).style.top = (parseInt(indicator_height) * (ind_count - 1));
			document.getElementById("ind_chart_" + pic_name[ref].name).style.visibility = "visible";
			document.getElementById("ind_temp_" + pic_name[ref].name).style.visibility = "visible";

			//Turn on regions for stochastics and rsi
			if(ref == 1){
				document.getElementById("ind_region_fsto").style.visibility = 'visible';
				document.getElementById("ind_region_fsto").style.top = (parseInt(indicator_height) * (ind_count - 1));
			}
			if(ref == 2){
				document.getElementById("ind_region_ssto").style.visibility = 'visible';
				document.getElementById("ind_region_ssto").style.top = (parseInt(indicator_height) * (ind_count - 1));
			}
			if(ref == 4){
				document.getElementById("ind_region_rsi").style.visibility = 'visible';
				document.getElementById("ind_region_rsi").style.top = (parseInt(indicator_height) * (ind_count - 1));
			}

			document.ocp_chart.ind_remember.value = ind + "," + ref;

		//Turn the Indicator off
		} else {
			var ind='';
			var found=0;
			document.getElementById("ind_chart_" + pic_name[ref].name).style.visibility = "hidden";
			document.getElementById("ind_temp_" + pic_name[ref].name).style.visibility = "hidden";
			document.getElementById("ind_blank_" + pic_name[ref].name).style.visibility = "hidden";

			if(ref == 1){ document.getElementById("ind_region_fsto").style.visibility = 'hidden'; }
			if(ref == 2){ document.getElementById("ind_region_ssto").style.visibility = 'hidden'; }
			if(ref == 4){ document.getElementById("ind_region_rsi").style.visibility = 'hidden'; }

			//Reset Indicators to new locations after removal
			document.getElementById("ind_spacer").style.height = (parseInt(indicator_height) * ind_count) + "px";
			for(p=0; p<pic_name.length; p++){
				if(document.getElementById("ind_chart_" + pic_name[p].name).style.visibility != "hidden" ){
					document.getElementById("ind_chart_" + pic_name[p].name).style.top = (parseInt(indicator_height) * found);
					document.getElementById("ind_temp_" + pic_name[p].name).style.top = (parseInt(indicator_height) * found);

					//Move regions for stochastics and rsi to its new position
					if(p == 1){ document.getElementById("ind_region_fsto").style.top = (parseInt(indicator_height) * found); }
					if(p == 2){ document.getElementById("ind_region_ssto").style.top = (parseInt(indicator_height) * found); }
					if(p == 4){ document.getElementById("ind_region_rsi").style.top = (parseInt(indicator_height) * found); }

					ind += p + ",";
					found++;
				}
			}

			//remember what charts are visible
			len = ind.length;
			ind = ind.substr(0, len - 1);
			document.ocp_chart.ind_remember.value = ind;
		}
	}
	maintainHighlight();
}



function layerIndicators(ref){
	var ind_count=0;
	for(p=0; p<pic_name.length; p++){
		if(document.getElementById("ind_chart_" + pic_name[p].name).style.visibility != 'hidden'){ ind_count++; }
	}
	if(document.getElementById("ind_chart_" + pic_name[ref].name).style.visibility == "hidden"){ ind_count++; }
	else{ ind_count--;}

	//All indicators are off
	if(ind_count <= 0){
		document.getElementById("ind_spacer").style.height = "0px";
		document.getElementById("ind_spacer").style.visibility = "hidden";
		document.getElementById("ind_region_fsto").style.visibility = 'hidden';
		document.getElementById("ind_region_ssto").style.visibility = 'hidden';
		document.getElementById("ind_region_rsi").style.visibility = 'hidden';

		for(p=0; p<pic_name.length;p++){
			document.getElementById("ind_temp_" + pic_name[p].name).style.visibility = "hidden";
			document.getElementById("ind_blank_" + pic_name[p].name).style.visibility = "hidden";
			document.getElementById("ind_chart_" + pic_name[p].name).style.visibility = "hidden";
		}
		
		document.ocp_chart.ind_remember.value = '';

	 //Only one Indicator should be on
	} else if(ind_count == 1) {
		document.getElementById("ind_spacer").style.height = indicator_height + "px";

		//Turning on selected indicator
		if(document.getElementById("ind_chart_" + pic_name[ref].name).style.visibility == 'hidden'){
			document.getElementById("ind_temp_" + pic_name[ref].name).style.top = 0;
			document.getElementById("ind_chart_" + pic_name[ref].name).style.top = 0;
			document.getElementById("ind_spacer").style.visibility = "visible";
			document.getElementById("ind_temp_" + pic_name[ref].name).style.visibility = "visible";
			document.getElementById("ind_blank_" + pic_name[ref].name).style.visibility = "hidden";
			document.getElementById("ind_chart_" + pic_name[ref].name).style.visibility = "visible";

			//Turn on regions for stochastics and rsi
			if(ref == 1){
				document.getElementById("ind_region_fsto").style.visibility = 'visible';
				document.getElementById("ind_region_fsto").style.top = 0;
			}
			if(ref == 2){
				document.getElementById("ind_region_ssto").style.visibility = 'visible';
				document.getElementById("ind_region_ssto").style.top = 0;
			}
			if(ref == 4){
				document.getElementById("ind_region_rsi").style.visibility = 'visible';
				document.getElementById("ind_region_rsi").style.top = 0;
			}
		
			document.ocp_chart.ind_remember.value = ref;
	
		//Turning off selected indicator
		} else {
			document.getElementById("ind_chart_" + pic_name[ref].name).style.visibility = "hidden";
			document.getElementById("ind_blank_" + pic_name[ref].name).style.visibility = "hidden";

			//Turn off regions for stochastics and rsi
			if(ref == 1){ document.getElementById("ind_region_fsto").style.visibility = 'hidden'; }
			if(ref == 2){ document.getElementById("ind_region_ssto").style.visibility = 'hidden'; }
			if(ref == 4){ document.getElementById("ind_region_rsi").style.visibility = 'hidden'; }
	
			//Determine what is left
			for(p=0; p<pic_name.length; p++){
				if(document.getElementById("ind_chart_" + pic_name[p].name).style.visibility != 'hidden' ){
					document.getElementById("ind_chart_" + pic_name[p].name).style.top = 0;

					if(p == 1){ document.getElementById("ind_region_fsto").style.visibility = 'visible'; }
					if(p == 2){ document.getElementById("ind_region_ssto").style.visibility = 'visible'; }
					if(p == 4){ document.getElementById("ind_region_rsi").style.visibility = 'visible'; }
				}
			}
		}

 	//More than one Indicator is on
	} else {
		document.getElementById("ind_spacer").style.height = indicator_height + "px";

		//If we are turning another indicator on
		if(document.getElementById("ind_chart_" + pic_name[ref].name).style.visibility == "hidden"){
			var ind = document.ocp_chart.ind_remember.value;

			//reset all indicators to base levels
			for(p=0; p<pic_name.length; p++){
				document.getElementById("ind_blank_" + pic_name[p].name).style.zIndex = 1;
				document.getElementById("ind_chart_" + pic_name[p].name).style.zIndex = 2;
			}

				//Now assign the selected indicator to its rightful top position
			document.getElementById("ind_chart_" + pic_name[ref].name).style.top = 0;
			document.getElementById("ind_blank_" + pic_name[ref].name).style.top = 0;
			document.getElementById("ind_blank_" + pic_name[ref].name).style.zIndex = 10;
			document.getElementById("ind_chart_" + pic_name[ref].name).style.zIndex = 11;
			document.getElementById("ind_blank_" + pic_name[ref].name).style.visibility = "visible";
			document.getElementById("ind_chart_" + pic_name[ref].name).style.visibility = "visible";

			//Turn off all regions for stochastics and rsi
			document.getElementById("ind_region_fsto").style.visibility = 'hidden';
			document.getElementById("ind_region_ssto").style.visibility = 'hidden';
			document.getElementById("ind_region_rsi").style.visibility = 'hidden';


			//Turn on regions for stochastics and rsi
			if(ref == 1){
				document.getElementById("ind_region_fsto").style.visibility = 'visible';
				document.getElementById("ind_region_fsto").style.top = 0;
			}
			if(ref == 2){
				document.getElementById("ind_region_ssto").style.visibility = 'visible';
				document.getElementById("ind_region_ssto").style.top = 0;
			}
			if(ref == 4){
				document.getElementById("ind_region_rsi").style.visibility = 'visible';
				document.getElementById("ind_region_rsi").style.top = 0;
			}

			//remember what charts are visible
			document.ocp_chart.ind_remember.value = ind + "," + ref;

		//If we are turning an indicator off
		} else {
			var ind='';
			var found=0;

			//Turn off the selected indicator
			document.getElementById("ind_chart_" + pic_name[ref].name).style.visibility = "hidden";
			document.getElementById("ind_blank_" + pic_name[ref].name).style.visibility = "hidden";

			//Turn off regions for stochastics and rsi
			document.getElementById("ind_region_fsto").style.visibility = 'hidden';
			document.getElementById("ind_region_ssto").style.visibility = 'hidden';
			document.getElementById("ind_region_rsi").style.visibility = 'hidden';

			//Find what indicators are left
			last_ind = 0;
			for(p=0; p<pic_name.length; p++){
				if(document.getElementById("ind_chart_" + pic_name[p].name).style.visibility != "hidden" ){
					document.getElementById("ind_chart_" + pic_name[p].name).style.top = 0;
					ind += p + ",";
					found++;
					last_ind = p;
				}
				//reset all indicators to base levels
				document.getElementById("ind_blank_" + pic_name[p].name).style.zIndex = 1;
				document.getElementById("ind_chart_" + pic_name[p].name).style.zIndex = 2;
			}


			//Turn on regions for stochastics and rsi if it is the last_ind
			if(last_ind == 1){
				document.getElementById("ind_region_fsto").style.visibility = 'visible';
				document.getElementById("ind_region_fsto").style.top = 0;
			}
			if(last_ind == 2){
				document.getElementById("ind_region_ssto").style.visibility = 'visible';
				document.getElementById("ind_region_ssto").style.top = 0;
			}
			if(last_ind == 4){
				document.getElementById("ind_region_rsi").style.visibility = 'visible';
				document.getElementById("ind_region_rsi").style.top = 0;
			}

			//Use the last visible chart to display as the top chart
			document.getElementById("ind_blank_" + pic_name[last_ind].name).style.visibility = "visible";
			document.getElementById("ind_blank_" + pic_name[last_ind].name).style.zIndex = 10;
			document.getElementById("ind_chart_" + pic_name[last_ind].name).style.zIndex = 11;

			//remember what charts are visible
			len = ind.length;
			ind = ind.substr(0, len - 1);
			document.ocp_chart.ind_remember.value = ind;
		}
	}
	maintainHighlight();
}


function saveChart(do_print)
{
	var url = "saveChart.cgi?";
	var params = "";

	if(document.getElementById("ocp_avg").style.visibility != "hidden")
		params += "mvavg=1&";

	if(document.ocp_chart.show_ind[0].checked)
		params += "tiled=1&";
	else
		params += "tiled=0&";
	
	//Determine which indicators are showing
	params += "ind=";
	var inds = new Array();
	for(p=0; p<pic_name.length; p++){
		if(document.getElementById("ind_chart_"+pic_name[p].name).style.visibility != 'hidden')
			params += "1,";
		else
			params += "0,";
	}

	params = params.substr(0,params.length-1);
	if(isNS6 && do_print == "print")
		params += "&print=1";
	else
		params += "&print=0";
	url += params;
	window.open(url,'saveChart','height=600,width=677,scrollbars');
}


function printChart()
{
	if(isNS6){
		saveChart("print");
		return;
	}

	var new_window = window.open("","printChart","height=600,width=677,scrollbars");
	new_window.document.open();

	var tbl = "<html>";
	tbl += "<head><title>Printing...</title>";
	tbl += "<link rel='stylesheet' type='text/css' href='/template/chartbook/chrtbk_style.css'>";
	tbl += "<head><body>";
	tbl += "<table cellspacing=0 cellpadding=0 border=0 width='650'>";
	tbl += "<tr>";
	tbl += "	<td><table cellspacing=0 cellpadding=0 border=0 width='100%'>";
	tbl += "	<tr>";
	if(isNS6)
		tbl += "		<td><input type='button' name='print' value='Print this page' onClick=\"print()\"></td>";
	tbl += "		<td align='right' class='page_body'>";
	tbl += 		document.getElementById('chart_details').innerHTML;
	tbl += "		</td>";
	tbl += "	</tr>";
	tbl += "</table>";
	tbl += "<tr><td>";
	tbl += "<table cellpadding=1 cellspacing=1 border=0 align='right' width='100%'>";
	tbl += "<tr align='right' class='row_header'>";
	tbl += "	<td width=126 colspan=2>Date Time</td>";
	tbl += "	<td width=60>Open</td>";
	tbl += "	<td width=60>High</td>";
	tbl += "	<td width=60>Low</td>";
	tbl += "	<td width=60>Close</td>";
	tbl += "	<td width=70>Volume</td>";
	tbl += "	<td width=70>Open Int</td>";
	tbl += "	<td width=60>Change</td>";
	tbl += "	<td width=55>&nbsp;</td>";
	tbl += "</tr>";
	tbl += "<tr align='right' class='row_highlight'>";
	tbl += "	<td width=55><strong>Last</strong></td>";
	tbl += "	<td>"+document.getElementById('last_date').innerHTML+"</td>";
	tbl += "	<td>"+document.getElementById('last_open').innerHTML+"</td>";
	tbl += "	<td>"+document.getElementById('last_high').innerHTML+"</td>";
	tbl += "	<td>"+document.getElementById('last_low').innerHTML+"</td>";
	tbl += "	<td>"+document.getElementById('last_close').innerHTML+"</td>";
	tbl += "	<td>&nbsp;</td>";
	tbl += "	<td>&nbsp;</td>";
	tbl += "	<td>"+document.getElementById('last_change').innerHTML+"</td>";
	tbl += "	<td>&nbsp;</td>";
	tbl += "</tr>";
	tbl += "</table>";
	tbl += "</td></tr>";
	tbl += "<tr><td><div style='position: relative; z-index: -1; background-color: #FFFFFF'>";

	//Chart Background
	tbl += "<img src='"+pic_temp[2].src+"' style='position: absolute; z-index: 0; left: 0; top: 0; visibility: visible'>";

	//Moving Avg
	if(document.getElementById("ocp_avg").style.visibility != 'hidden')
		tbl += "<img src='"+pic_ocp[1].src+"' style='position: absolute; left: 0; top: 0; z-index: 2'>";

	//Chart
	tbl += "<img src='"+pic_ocp[0].src+"' galleryimg='no' style='position: absolute; left: 0; z-index: 3; visibility: visible'>";

	tbl += "</div></td></tr>";
	tbl += "<tr><td><div style='position: relative; z-index: -1; height: 0px; background-color: #FFFFFF'>";

	//Determine which indicators are showing
	var inds = new Array();
	for(p=0; p<pic_name.length; p++){
		if(document.getElementById("ind_chart_"+pic_name[p].name).style.visibility != 'hidden')
			inds.push(p);
	}

	var adjust = 0;
	if(!isNS6) adjust = 299;

	var show_ind = 0;
	for(var i=0; i<inds.length; i++){
		var id = inds[i];

		//ind highlighted regions
		var ind_id = id;
		if(document.ocp_chart.show_ind[1].checked)
			ind_id = inds[inds.length-1];

		if((document.ocp_chart.show_ind[1].checked && show_ind < 1) || document.ocp_chart.show_ind[0].checked){
			if(pic_name[ind_id].name.match(/sto/))
				tbl += "<img src='" + pic_temp[4].src + "' style='position: absolute; top: "+adjust+"; left: 0; z-index: -1'>";
			else if(pic_name[ind_id].name.match(/rsi/))
				tbl += "<img src='" + pic_temp[3].src + "' style='position: absolute; top: "+adjust+"; left: 0; z-index: -1'>";
			show_ind++;
		}

		//ind tmp background
		if(i == 0 || document.ocp_chart.show_ind[0].checked){
			tbl += "<img src='" + pic_temp[0].src + "' style='position: absolute; left: 0; top: "+adjust+"; z-index: 0'>";
		//ind blank background
		}else if(i == inds.length - 1 && document.ocp_chart.show_ind[1].checked){
			tbl += "<img src='" + pic_temp[1].src + "' style='position: absolute; left: 0; top: "+adjust+"; z-index: 0'>";
		}

		//ind graph
		tbl += "<img src='" + pic_name[id].src + "' style='position: absolute; left: 0; top: "+adjust+"; z-index: 2'>";

		if(document.ocp_chart.show_ind[0].checked){
			adjust += 100;
		}
	}

	tbl += "</div></td></tr>";
	tbl += "</table>";
	tbl += "</body></html>";
	new_window.document.write(tbl);
	new_window.document.close();
	if(window.print && !isNS6) new_window.print();	
}


