var updatingcart = false;

function update_shopcart(fieldobj)
{	var req = false;

	wait_for_update();

	var updatingcart = true;

	if(fieldobj.name == "additem")
	{	fieldobj.value = "Adding to cart...";
		fieldobj.disabled = true;

		//get the tr object
		trobj = fieldobj;
		while(trobj.tagName != "TR"){
			trobj = trobj.parentNode;
		}
		var inputs = trobj.getElementsByTagName("INPUT");
		var spans = trobj.getElementsByTagName("SPAN");

		var thispart = [];
		for(var i=0;i<inputs.length;i++)
		{	thispart[inputs[i].name] = inputs[i].value;
			if(inputs[i].name == 'quantity'){
				if(typeof(inputs[i].value) == 'undefined' || inputs[i].value <= 0){
					thispart['quantity'] = 1;
				}
			}
		}
		thispart["partcost"] = isNaN(thispart["partcost"]) ?
			0 : parseFloat(thispart["partcost"]);
		var params = "fieldname=additem"
			+ "&fieldvalue=" + encodeURI(fieldobj.value)
			+ "&line=" + encodeURI(thispart["line"])
			+ "&partnum=" + encodeURI(thispart["partnum"])
			+ "&partdesc=" + encodeURI(thispart["partdesc"])
			+ "&quantity=" + encodeURI(thispart["quantity"])
			+ "&addedfrom=" + encodeURI(thispart["addedfrom"]);
	}
	else if(fieldobj.name == "remitem")
	{	//get the row index

		var matchrow = fieldobj.parentNode;
		while(matchrow.tagName != "TR")
		{	matchrow = matchrow.parentNode;
		}

		var rowindex = -1;
		var tbody = document.getElementById('shopcartitems').getElementsByTagName('tr');
		for(var i=0;i<tbody.length;i++)
		{	if(tbody[i] == matchrow)
			{	rowindex = i;
				break;
			}
		}

		var params = "fieldname=remitem"
			+ "&i=" + rowindex;
	}
	else if(fieldobj.name == "updateqty")
	{	//get the row index

		var matchrow = fieldobj.parentNode;
		while(matchrow.tagName != "TR")
		{	matchrow = matchrow.parentNode;
		}

		var rowindex = -1;
		var tbody = document.getElementById('shopcartitems').getElementsByTagName('tr');
		for(var i=0;i<tbody.length;i++)
		{	if(tbody[i] == matchrow)
			{	rowindex = i;
				break;
			}
		}
		//get the new quantity
		var inputelements = matchrow.getElementsByTagName("INPUT");
		for(var i=0;i<5;i++)
		{	if(inputelements[i].name == "qty")
			{	newqty = inputelements[i].value;
				break;
			}
		}

		var params = "fieldname=updateqty"
			+ "&fieldvalue=" + encodeURI(newqty)
			+ "&i=" + encodeURI(rowindex);
	}
	else // clearcart
	{	var params = "fieldname=" + encodeURI(fieldobj.name)
			+ "&fieldvalue=" + encodeURI(fieldobj.value);
	}

	ajax_request("shop/shopcart_ajax.php",params,fieldobj,"shopcart");
}

function complete_shopcart(req,fieldobj)
{	var response = req.responseXML.documentElement;
	var type = response.selectSingleNode("//type/text()").nodeValue;

	if(type == "itemadded")
	{	var newqty = response.selectSingleNode('//quantity/text()').nodeValue;
		var newsubtotal = response.selectSingleNode('//shopcartsubtotal/text()').nodeValue;
		var newnumitems = response.selectSingleNode('//shopcartnumitems/text()').nodeValue;

		fieldobj.value = "Add to cart";
		fieldobj.disabled = false;

		trobj = fieldobj;
		while(trobj.tagName != "TR"){
			trobj = trobj.parentNode;
		}
		var spans = trobj.getElementsByTagName("SPAN");
		for(var i=0;i<spans.length;i++)
		{	if(spans[i].className == "incartreport")
			{	var incartspan = spans[i].getElementsByTagName("SPAN")[0];
				incartspan.innerHTML = newqty + " of these in your cart";
				blink_text(incartspan.id,0,0,'');
			}
		}

		//update the shopcart summary link
		document.getElementById('shopcartlink').innerHTML = 
			"View Shopping Cart ($" + newsubtotal
			+ ", " + newnumitems
			+ " items)";
	}
	else if(type == "itemremoved")
	{	var newsubtotal = response.selectSingleNode('//shopcartsubtotal/text()').nodeValue;
		var newnumitems = response.selectSingleNode('//shopcartnumitems/text()').nodeValue;

		//update the shopcart summary link
		document.getElementById('shopcartlink').innerHTML = 
			"View Shopping Cart ($" + newsubtotal
			+ ", " + newnumitems
			+ " items)";

		//update the shopcart view summary
		document.getElementById('shopcartviewnumitems').innerHTML = newnumitems;
		document.getElementById('shopcartviewsubtotal').innerHTML = "$" + newsubtotal;

		//remove it from the shopcart view
		var del = fieldobj.parentNode;
		while(del.tagName != "TR")
		{	del = del.parentNode;
		}
		del.parentNode.removeChild(del);
	
	}
	else if(type == "qtyupdated")
	{	var itemsubtotal = response.selectSingleNode('//subtotal/text()').nodeValue;
		var itemquantity = response.selectSingleNode('//quantity/text()').nodeValue;
		var newsubtotal = response.selectSingleNode('//shopcartsubtotal/text()').nodeValue;
		var newnumitems = response.selectSingleNode('//shopcartnumitems/text()').nodeValue;

		//update the shopcart summary link
		document.getElementById('shopcartlink').innerHTML = 
			"View Shopping Cart ($" + newsubtotal
			+ ", " + newnumitems
			+ " items)";

		//update the shopcart view summary
		document.getElementById('shopcartviewnumitems').innerHTML = newnumitems;
		document.getElementById('shopcartviewsubtotal').innerHTML = "$" + newsubtotal;

		//remove it from the shopcart view
		var upd = fieldobj.parentNode;
		while(upd.tagName != "TR")
		{	upd = upd.parentNode;
		}

		var spans = upd.getElementsByTagName("SPAN");
		for(var i=0;i<spans.length;i++)
		{	if(spans[i].className == "qtymultiplier")
			{	spans[i].innerHTML = itemquantity;
			}
			else if(spans[i].className == "subtotal")
			{	spans[i].innerHTML = "$" + itemsubtotal;
			}
		}
	
	}
	else if(type == "cartcleared")
	{	//for javascript 1.1
		window.location.replace(unescape(window.location.pathname));
		//for javascript 1.2
		window.location.reload(false);
	}
	else if(type == "template")
	{	var addline = response.selectSingleNode('//line/text()').nodeValue;
		var partnum = response.selectSingleNode('partnum').text;
		var partdesc = response.selectSingleNode('partdesc').text.replace("\"","&quot;");
		var quantity = response.selectSingleNode('quantity').text;
		var price = response.selectSingleNode('price').text;

		var tbody = document.getElementById('orderdetails');
		var tr = document.createElement("TR");
		var td = document.createElement("TD");
		td.align = "center";
		td.innerHTML = "<a href=\"\" name=\"removeitem\" onclick=\"update_order(this); return false;\">x</a>";
		tr.appendChild(td);
		var td = document.createElement("TD");
		td.innerHTML = "<input style=\"width: 30px;\" value=\"" + addline + "\" disabled=\"true\">";
		tr.appendChild(td);
		var td = document.createElement("TD");
		td.innerHTML = "<input style=\"width: 80px;\" value=\"" + partnum + "\" disabled=\"true\">";
		tr.appendChild(td);
		var td = document.createElement("TD");
		td.innerHTML = "<input value=\"" + partdesc + "\" disabled=\"true\">";
		tr.appendChild(td);
		var td = document.createElement("TD");
		td.innerHTML = "<input style=\"width: 30px; background: #fcc;\" value=\"0\">/<input style=\"width: 30px;\" name=\"updateitemqty\" value=\"" + quantity + "\" onchange=\"update_order(this);\">";
		tr.appendChild(td);
		var td = document.createElement("TD");
		td.innerHTML = "<input name=\"updateitemprice\" style=\"width: 40px;\" value=\"" + price + "\" onchange=\"update_order(this);\">";
		tr.appendChild(td);
		tbody.appendChild(tr);

		document.getElementById('additemvalid').value = 0;
		document.getElementById('additemline').value = "";
		document.getElementById('additemnum').value = "";
		document.getElementById('additemdesc').value = "Auto";
		document.getElementById('additemqty').value = 1;
		document.getElementById('additemprice').value = "Auto";
	}

	updatingcart = false;
}

function wait_for_update()
{	if(updatingcart)
	{	updateID = window.setTimeout("wait_for_update()",500);
	}
}

function blink_text(objid,count,timerid)
{	var o = document.getElementById(objid);

	if(count % 2)
	{	o.style.color = "#000";
	}
	else
	{	o.style.color = "#7f7";
	}
	if(count < 9)
	{	count++;
		timerid = setTimeout("blink_text('"+objid+"',"+count+","+timerid+")",250);
	}
	else
	{	clearTimeout(timerid);
	}
}
