var init = false;
var portfolioRow0 = null;
var editRow0 = null;
var selectedSymbol = null;
var smoothMoveIntervalId = 0;
var moveDiv = null;
var lookupSuccess = false;

function scroll()
{
	window.scrollTo(0,1);
}

function smoothMoveRight()
{
	var left = moveDiv.offsetLeft

	if (left == 0)
	{
		clearTimeout(smoothMoveIntervalId);
	}
	else
	{
		moveDiv.style.left = left - 80;
	}
}

function smoothMoveLeft()
{
	var left = moveDiv.offsetLeft

	if (left == 0)
	{
		clearTimeout(smoothMoveIntervalId);
	}
	else
	{
		moveDiv.style.left = left + 80;
	}
}

function scrollDown(divName)
{
	var div = document.getElementById(divName);
	div.scrollTop += 40;	
}

function scrollUp(divName)
{
	var div = document.getElementById(divName);
	div.scrollTop -= 40;
}

function scrollSelected(td)
{
	var className = td.className + 'Select';
	td.className = className;
}

function scrollDeSelected(td)
{
	td.className  = td.className.replace('Select','');	
}

function show(show, hide1, hide2, direction)
{

	// Direction
	// 0: Left
	// 1: Right
	// 2: Up
	// 3: Down
	// Up and Down Are No Yet Implemented
	
	var showdiv = document.getElementById(show);
	var hide1 = document.getElementById(hide1);
	var hide2 = document.getElementById(hide2);
	
	
	showdiv.style.zIndex = "100";
	
	hide1.style.zIndex = "10";
	hide2.style.zIndex = "0";
	
	moveDiv = showdiv;
	
	if (direction == 0)
	{
		showdiv.style.left = -320;
		smoothMoveIntervalId = setInterval (smoothMoveLeft, 0);
	}
	
	if (direction == 1)
	{
		showdiv.style.left = 320;
		smoothMoveIntervalId = setInterval (smoothMoveRight, 0);
	}
	
	
}

function showChart(element)
{
	clearChartDurations('portfolioChartRow');	
	var tbody = document.getElementById("portfolioTBody");
	var thisRow = element.id;
	var rows = tbody.rows;
	
	var chartImage = document.getElementById("portfolioChartImage");
	chartImage.src = context + "/chart?width=320&height=125&symbol=" + element.id + "&duration=today";
	
	for (var i=0; i < rows.length; i++)
	{
		
		var row = rows[i];
		var cells=row.cells;
		if (row.id == thisRow)
		{
			for (var j=0; j < cells.length; j++)
			{
				var td = cells[j];
				switch(j)
				{
					case 0: td.className = 'defaultContentActiveSpacerLeft'; break;
					case 6: var nodes = td.getElementsByTagName('img');
							img = nodes[0];
							img.src = context + "/images/img-arrow-wh-ro.png";
							td.className = td.className.replace("Inactive","Active");
							break;
					case 7: td.className = 'defaultContentActiveSpacerRight'; break;
					default: td.className = td.className.replace("Inactive","Active"); break;
				}
			}
		}
		else
		{
			for (var j=0; j < cells.length; j++)
			{
				var td = cells[j];
				td.className = td.className.replace("Active","Inactive");
				if (j == 6)
				{
					var nodes = td.getElementsByTagName('img');
					img = nodes[0];
					img.src = context + "/images/img-arrow-wh1.png";
				}
			}
		}
	}
	
	var chartTable = document.getElementById("portfolioChartTable");
	
	var tdToday = document.getElementById("portfolioChartToday");
	tdToday.className = 'chartContentSelected';
	chartTable.style.display = 'table';
	
	selectedSymbol = element.id;

}

function checkValue(text)
{
	if (text.value == '')
	{
		text.value = 'Enter symbol';
	}
	scroll();
}

function checkAddValue(text)
{
	if (text.value == '')
	{
		text.value = 'Add symbol';
	}
	scroll();
}

function clearChartDurations(rowName)
{
	row = document.getElementById(rowName);
	var cells = row.cells;
	for (var i=1; i < cells.length; i++)
	{
		var cell = cells[i];
		if (cell.id != null)
		{
			cell.className = 'chartContent';
		}
	}
}

function setDuration(duration, rowName, imageName, thisTd)
{
	row = document.getElementById(rowName);
	var cells = row.cells;
	for (var i=0; i < cells.length; i++)
	{
		var cell = cells[i];
		if ( (cell.id != null) && (i != 0) && (i != cell.length - 1) )
		{
			if (cell.id != thisTd.id)
			{
				cell.className = 'chartContent';
			}
			else
			{
				cell.className = 'chartContentSelected';
			}
		}
	}
	image = document.getElementById(imageName);
	image.src = context + "/chart?width=320&height=125&symbol=" + selectedSymbol + "&duration=" + duration;
}

function deleteEditRow()
{
	var button = this;
	var td = this.parentNode;
	var tr = td.parentNode;
	AOLMoney.deleteSymbol(tr.id,function(data){
	})
	removeTableRow("editTBody", tr.id);
	var form = document.getElementById("addForm");
	form.reset();
	dwr.util.setValue('editSymbol','Enter symbol or company');
}

function removeTableRow(tableId, rowId)
{
	var table = document.getElementById(tableId);
	var row = document.getElementById(rowId);
	
	var rows = table.rows;
		
	for (var i=0; i < rows.length; i++)
	{
		var row = rows[i];
		if (row.id == rowId)
		{
			table.deleteRow(i);
		}
	}
}

function prepDelete(element)
{
	
	var tbody = document.getElementById("editTBody");
	
	var rows = tbody.rows;
	
	for (var i=0; i < rows.length; i++)
	{
		
		var row = rows[i];
		var cells=row.cells;
		if (row.id == element.id)
		{
			for (var j=0; j < cells.length; j++)
			{
				var td = cells[j];
				td.className = td.className.replace("Inactive","Active");
				if (j==0)
				{
					td.className = 'editContentActiveSpacerLeft';
				}
				if (j == 1)
				{
					var nodes = td.getElementsByTagName('img');
					img = nodes[0];
					img.src = context + "/images/icon-minus-ro.png";
				}
				if (j == 5)
				{
					var nodes = td.getElementsByTagName('img');
					img = nodes[0];
					img.src = context + "/images/delete-button.gif";
					//img.addEventListener("click", deleteEditRow, false);
					img.onclick = deleteEditRow;
				}
				if (j==6)
				{
					td.className = 'editContentActiveSpacerRight';
				}
			}
		}
		else
		{
			for (var j=0; j < cells.length; j++)
			{
				var td = cells[j];
				td.className = td.className.replace("Active","Inactive");
				if (j == 1)
				{
					var nodes = td.getElementsByTagName('img');
					img = nodes[0];
					img.src = context + "/images/icon-minus.png";
				}
				if (j == 5)
				{
					var nodes = td.getElementsByTagName('img');
					img = nodes[0];
					img.src = context + "/images/spacer.gif";
				}
			}
		}
	}
}

function addSymbol(symbolElement, buttonElement, formElement)
{
	var goButton = document.getElementById(buttonElement);
	goButton.focus();
	
	var symbol = dwr.util.getValue(symbolElement);
	if (symbol == null || symbol == '')
	{
		//alert("Please Enter A Stock Symbol.");
	}
	else
	{
		AOLMoney.addSymbol(symbol, function(quote){
			if (quote.name == null)
			{
				alert("Stock Symbol Not Found. Please Try Again.");
			}
			else
			{
				addTableRow("editTBody", quote);
			}
		})
		
	}
	var form = document.getElementById(formElement);
	form.reset();
	//dwr.util.setValue('editSymbol','Enter symbol or company');
}

function addTableRow(tableId, quote)
{
	var table = document.getElementById(tableId);
	var copy = editRow0.cloneNode(true);
	table.appendChild(copy);
	var i = table.rows.length - 1;
	copy.id = quote.symbol;
	copy.className = 'defaultContentInactive';
	var cells = copy.cells;
		
	for (var j=0; j < cells.length; j++)
	{
		var tmp = cells.item(j);
		var cellNodes = tmp.getElementsByTagName("span");
		for (var k=0; k < cellNodes.length; k++)
		{
			var cellElem = cellNodes.item(k);
			
			if (cellElem.id != null)
			{
				cellElem.id = cellElem.id + i;
				switch(j)
				{
					case 3:
							if (quote.type != 'STOCK')
							{
								dwr.util.setValue(cellElem.id,quote.name);
							}
							else
							{
								dwr.util.setValue(cellElem.id,quote.symbol);
							} 
							break;
					case 4: dwr.util.setValue(cellElem.id,quote.quote); break;
					default: break;
				}
			}
		}
	}
}

function getQuoteByRowId(element)
{
	var symbol = element.id;
	getQuoteBySymbol(symbol);
	
	/*if (lookupSuccess == true)
	{
		showChartBySymbol(symbol);
		show('quote','portfolio','edit',1);
		scroll();
	}*/
}

function setQuoteData(quote)
{
	if (quote.stockName != null && quote.stockName != '')
		{
		dwr.util.setValue("stockName",quote.stockName);
		dwr.util.setValue("lastSale",quote.priceLastSale);
		dwr.util.setValue("priceChange",quote.priceChange);
		dwr.util.setValue("priceChangePct",quote.priceChangePct + "%");
		dwr.util.setValue("dayLow",quote.priceLow);
		dwr.util.setValue("dayHigh",quote.priceHigh);
		dwr.util.setValue("52WkLow",quote.priceLow52Wks);
		dwr.util.setValue("52WkHigh",quote.priceHigh52Wks);
		dwr.util.setValue("prevClose",quote.pricePrevClose);
		dwr.util.setValue("todayOpen",quote.priceOpen);
		dwr.util.setValue("newsLink", quote.ticker);
		var newsUrl = document.getElementById('newsUrl');
		var researchUrl = document.getElementById('researchUrl');
		newsUrl.href = quote.url;
		researchUrl.href = quote.url;
		if (quote.volCume != null)
		{
			dwr.util.setValue("volume",quote.volCume + "M");
		}
		if (quote.volAvg30d != null)
		{
			dwr.util.setValue("vol30d",quote.volAvg30d + "M");
		}
		if (!(quote.positiveChange))
		{
			document.getElementById("priceChangeIndicator").firstChild.src = "/AOLMoney/images/img-arrow-red.png";
			document.getElementById("priceChange").className = 'quickQuoteMinusNum';
			document.getElementById("priceChangePct").className = 'quickQuoteMinusPct';
		}
		else
		{
			document.getElementById("priceChangeIndicator").firstChild.src = "/AOLMoney/images/img-arrow-grn.png";
			document.getElementById("priceChange").className = 'quickQuotePlusNum';
			document.getElementById("priceChangePct").className = 'quickQuotePlusPct';
		}
		
		
		lookupSuccess = true;
		}
		else
		{
			alert("Stock Symbol Not Found. Please Try Again.");
			lookupSuccess = false;
		}	
}

function getQuoteBySymbol(symbol)
{
	//var success = false;	
	
	if (symbol == null || symbol == '')
	{
		//alert("Please Enter A Stock Symbol.");	
	}
	else
	{
	clearChartDurations('quoteChartRow');
	var callbackProxy = function(quote) {
		setQuoteData(quote);
		if (lookupSuccess == true)
		{
			show('quote','portfolio','edit',1);
			showChartBySymbol(symbol);
			scroll();
		}
		};
		
	var callMetaData = { callback:callbackProxy };
	
	AOLMoney.getQuoteDetail(symbol, callMetaData);
	
	//alert(lookupSuccess);
	}
}

function getQuote(symbolElement, buttonElement, formElement, currentPage)
{
	
	var goButton = document.getElementById(buttonElement);
	goButton.focus();

	var chartTable = document.getElementById('quoteChartTable');
	chartTable.style.display = 'none';
		
	var symbol = dwr.util.getValue(symbolElement);

	if (symbol != null && symbol != 'Enter symbol')
	{
		getQuoteBySymbol(symbol);
		showChartBySymbol(symbol);
		selectedSymbol = symbol;
		if (currentPage == 'portfolio')
		{
			show('quote','portfolio','edit');
		}
	}
	var form = document.getElementById(formElement);
	form.reset();
}

function showChartBySymbol(symbol)
{
	var chartTable = document.getElementById("quoteChartTable");
	var chartImage = document.getElementById("quoteChartImage");
	var tdToday = document.getElementById("quoteChartToday");
	tdToday.className = 'chartContentSelected';
	chartTable.style.display = 'table';
	chartImage.src = context + "/chart?width=320&height=125&symbol=" + symbol + "&duration=today";	
}

function getEdit()
{
	scroll();
	
	AOLMoney.getPortfolio(function(portfolio){
	
		var table = document.getElementById("editTBody");
		if (editRow0 == null)
		{
			editRow0 = document.getElementById("editPattern");
		}
		else
		{
			table.appendChild(editRow0);
		}
		dwr.util.removeAllRows('editTBody', {filter:function(tr) { return (tr.id != "editPattern");}});
		table = document.getElementById("editTBody");
		
		for (var i=0; i < portfolio.length; i++)
		{
			var quote = portfolio[i];
			var copy = editRow0.cloneNode(true);
			table.appendChild(copy);
			copy.id = quote.symbol;
			copy.className = 'defaultContentInactive';
			var cells = copy.cells;
			
			
			for (var j=0; j < cells.length; j++)
			{
				var tmp = cells.item(j);
				var cellNodes = tmp.getElementsByTagName("span");
				for (var k=0; k < cellNodes.length; k++)
				{
					var cellElem = cellNodes.item(k);
					
					if (cellElem.id != null)
					{
						cellElem.id = cellElem.id + i;
						switch(j)
						{
							case 3:
									if (quote.type != 'STOCK')
									{
										dwr.util.setValue(cellElem.id,quote.name);
									}
									else
									{
										dwr.util.setValue(cellElem.id,quote.symbol);
									} 
									break;
							case 4: dwr.util.setValue(cellElem.id,quote.quote); break;
							default: break;
						}
					}
				}
			}
		
		}
	table.deleteRow(0);
	show('edit','portfolio','quote',1);
	})
	
		
}

function getPortfolio(currentPage)
{
		scroll();
		clearChartDurations('portfolioChartRow');
		var chartTable = document.getElementById('portfolioChartTable');
		chartTable.style.display = 'none';
	
		AOLMoney.getPortfolio(function(portfolio){
		
		var table = document.getElementById("portfolioTBody");
		
		if (portfolioRow0 == null)
		{
			portfolioRow0 = document.getElementById("pattern");
		}
		else
		{
			table.appendChild(portfolioRow0);
		}
		dwr.util.removeAllRows('portfolioTBody', { filter:function(tr) { return (tr.id != "pattern");}});
		table = document.getElementById("portfolioTBody");
		
		for (var i=0; i < portfolio.length; i++)
		{	
			var quote = portfolio[i];
			var copy = portfolioRow0.cloneNode(true);
			table.appendChild(copy);
			copy.id = quote.symbol;
			copy.className = 'defaultContentInactive';
			var cells = copy.cells;
			
			
			for (var j=0; j < cells.length; j++)
			{
				var tmp = cells.item(j);
				var cellNodes = tmp.getElementsByTagName("span");
				for (var k=0; k < cellNodes.length; k++)
				{
					var cellElem = cellNodes.item(k);
					
					if (cellElem.id != null)
					{
						cellElem.id = cellElem.id + i;
						
						switch(j)
						{
							case 1: 
									if (quote.type != 'STOCK')
									{
										dwr.util.setValue(cellElem.id,quote.name);
									}
									else
									{
										dwr.util.setValue(cellElem.id,quote.symbol);
									} 
									break;
							case 2: dwr.util.setValue(cellElem.id,quote.quote); break;
							case 3: dwr.util.setValue(cellElem.id,quote.change);
									if (!(quote.positiveChange))
									{
										var span = document.getElementById(cellElem.id);
										span.className = 'defaultContentChangeMinus';
									}
									break;
							case 4: dwr.util.setValue(cellElem.id,quote.changePct + "%");
									if (!(quote.positiveChange))
									{
										var span = document.getElementById(cellElem.id);
										span.className = 'defaultContentChangeMinus';
									}
									break;
							default: break;
						}
					}
				}
			}
			if (i == 0)
			{
				showChart(copy);
			}
		}
		table.deleteRow(0);
		if (init)
		{
			if (currentPage == 'edit')
			{
				show('portfolio','edit','quote',0);
			}
			if (currentPage == 'quote')
			{
				show('portfolio','quote','edit',0);
			}
			
		}
		});
		
		init = true;
}