//*****************************************************************************
// Do not remove this notice.
//
// Copyright County Line Caboose.
//*****************************************************************************

function addNewLineHTML()
{
	// no longer works with TOTAL row
	var eItemList = document.getElementById("ItemList");
	
	var tempDIV = document.createElement("DIV");
	tempDIV.innerHTML = '<table><tbody><tr><td><input type="text" name="Item" size="10" /></td><td><input type="text" name="Quantity" style="text-align:right" size="10" value="1" /></td><td><div name="Description" align="right">&nbsp;</div></td><td><div name="UnitPrice" align="right">0.00</div></td><td><div name="Amount" align="right">0.00</div></td><td><input type="button" value="Remove Line" onClick="removeLine(this);"></td></tr></tbody></table>';
	
	eItemList.appendChild(tempDIV.firstChild.firstChild);
}

function addNewLine()
{
	var eItemList = document.getElementById("ItemList");
	var row = eItemList.insertRow(eItemList.rows.length-1);
	row.style.backgroundColor="white";
	
	var fldList = document.getElementsByName("Item").item(0).parentNode.parentNode.childNodes;
	var fldCNT = fldList.length;
	var fldNDX = -1;
	
	for (var i = 0; i < fldCNT; i++)
	{
		if (fldList[i].nodeName == "TD")
		{
			var cell = row.insertCell(row.cells.length); //Firefox doesn't like absence of argument here
			var field=cell.appendChild(fldList[i].childNodes[0].cloneNode(true));

			fldNDX += 1;
			switch(fldNDX)
			{
				case 0: // Item #
					field.value = "";
					break;
				case 1: // Quantity
					field.value = "1";
					break;
				case 2: // Description
					field.innerHTML = "&nbsp;";
					break;
				case 3: // Unit Price
				case 4: // Amount
					field.innerHTML = "0.00";
					break;
				case 5: // "Remove Line" Button
					break;
			}
		}
		
	}
}

function removeLine(eCell)
{
	// Don't delete last row (detail row + header row + footer row = 3)
	if (document.getElementById("ItemList").rows.length > 3)
	{
		eCell.parentNode.parentNode.parentNode.removeChild(eCell.parentNode.parentNode);
	}
}

function openRequest()
{
	var xmlHttp;
	try
	{    // Firefox, Opera 8.0+, Safari
	    xmlHttp=new XMLHttpRequest();
    }
	catch (e)
	{    // Internet Explorer
		try
		{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	
	return xmlHttp;
}

function processItem(eItem)
{
	if (eItem.value == "")
	{
		// blank out row
	}
	else
	{
		setItemValues(eItem,"...contacting server...","0.00");
		calcItemAmount(eItem);
		calcTotal();
		var xmlHttp = openRequest();
		if (xmlHttp)
		{
			xmlHttp.onreadystatechange=function()
			{
				if(xmlHttp.readyState==4)
				{
					processItemResponse(eItem, xmlHttp.responseText);
				}
			}
			xmlHttp.open("GET","http://www.countylinecaboose.ca/Products/GetInfo.cgi?code="+eItem.value,true);
			xmlHttp.send(null);
		}
	}
}

function processItemResponse(eItem, strResponse)
{
//alert(strResponse);
	if (strResponse == "")
	{
		setItemValues(eItem,"Unknown item, may still be available","0.00");
	}
	else
	{
		recResponse = strResponse.split("\t");
//alert(recResponse);
//				setItemValues(eItem,"Test","24.3");
		setItemValues(eItem,recResponse[2],recResponse[3]);
	}
	calcItemAmount(eItem);
	calcTotal();
}

function setItemValues(eItem, description, unitPrice)
{
	var row = getRowFromItem(eItem);
	
	getFieldFromRow(row, "Description").innerHTML = description + "&nbsp;";
	getFieldFromRow(row, "UnitPrice").innerHTML = fmtDollar(unitPrice);
}

function calcItemAmount(eItem)
{
	var row = getRowFromItem(eItem);
	
	try
	{			
		getFieldFromRow(row, "Amount").innerHTML = fmtDollar(getFieldFromRow(row, "Quantity").value * getFieldFromRow(row, "UnitPrice").innerHTML);
	}
	catch (e)
	{
		try
		{
			getFieldFromRow(row, "Amount").innerHTML = fmtDollar("0");
		}
		catch (e)
		{
		}
	}
}

function calcTotal()
{
	var divs = document.getElementsByTagName("DIV");
	var total = 0;

	for (var i=0; i<divs.length; i++)
	{
		try
		{
			if (divs[i].getAttribute("name") == "Amount")
			{
				total = total + parseFloat(divs[i].innerHTML);
			}
		}
		catch (e)
		{
			// Avoid undefined objects
		}
	}
	
	document.getElementById("TotalAmount").innerHTML = fmtDollar(total);
}

function getRowFromItem(eItem)
{
	return eItem.parentNode.parentNode;
}

function getFieldFromRow(row, fieldName)
{
	// Firefox doesn't recognize name tags on DIVs
	var fields = row.childNodes;
	for (var i=0; i<fields.length; i++)
	{
		try
		{
			if (fields[i].childNodes[0].getAttribute("name") == fieldName)
			{
				return fields[i].childNodes[0];
			}
		}
		catch (e)
		{
			// Avoid undefined objects
		}
	}

	// return null;
}

function fmtDollar(number)
{
	var fmtNum;
	
	number = number + ""; // Force to string
	
	if (number == "")
	{
		fmtNum = "0.00";
	}
	else
	{
		var decPos = number.indexOf(".");
		
		if (decPos == -1)
		{
			fmtNum = number + ".00";
		}
		else if (number.length - decPos > 3)
		{
			fmtNum = number.substr(0,decPos+3);
		}
		else if (number.length - decPos == 2)
		{
			fmtNum = number + "0";
		}
		else if (number.length - decPos == 1)
		{
			fmtNum = number + "00";
		}
		else
		{
			fmtNum = number;
		}
		
		if (decPos == 0)
		{
			fmtNum = "0" + fmtNum;
		}
	}

	return fmtNum;			
}
