// Order form processing

function orderItem (qty, item, price) {
//	alert(document.cookie);

	var thisstring = "Add to your order:\n" + qty + " off " + item + " at £" + price + " each\n Click \"CHECKOUT\" to see your order";
	if (confirm(thisstring))
	{
		changeItem(qty, item, price);
	}

//	alert(document.cookie);
}

function changeItem (qty, item, price)
{
	var cookieString = getcookie("FACE_Order");
	var newString = "|";

	if (cookieString != null)
	{
		// now see if it already contains item
		var itemFound = false;
		start = 0;
		end = 0;

		var i = 0;

		while (i <= cookieString.length)
		{
			start = i;
			end = start + item.length + 1;
			if (cookieString.substring(start,end) == item + "*") 	
			{
				itemFound = true;
				break; 
			}
			i++; 
		}
		if (itemFound)
		{
			// delete existing item first
			if (i != 0) newString = cookieString.substring(0,i);	// first part
			if (cookieString.indexOf("|",i) != cookieString.length -1)
				newString += cookieString.substring(cookieString.indexOf("|",i)+1, cookieString.length);	// last part
		}
		else
		{
			newString = cookieString;
		}
//		alert(newString);
	}
	if (qty > 0)
	{
		// add new/revised item
		newString += item + "*" + qty + "@" + price + "|";
	}

	expires = new Date();
	expires.setTime(expires.getTime() + 24 * 60 * 60 *365 * 1000);
//	setcookie("FACE_Order", newString, expires);

	document.cookie = "FACE_Order=" + newString + "; expires=" + expires.toGMTString();
//	alert(document.cookie);
}

function isOrderOpen(item) 
{
	var cookieFound = false;
	var start = 0;
	var end = 0;
	var cookieString = document.cookie;
	var name = "FACE_Order";

	var i = 0;

	// scan cookie for name
	while (i <= cookieString.length)
	{
		start = i;
		end = start + name.length;
		if (cookieString.substring(start,end) == name) 	
		{
			cookieFound = true;
			break; 
		}
		i++; 
	}
	if (cookieFound)
	{
		// are we just checking the cookie exists?
		if (!item)
		{
//			document.writeln('<form name="sys1051a">');
			document.writeln('<input type="image" src="checkout.gif" onclick="orderconfirm()">');
//			document.writeln('<input type="image" src="checkout.gif" onclick="getorderdetails()">');
//			document.writeln('<a href="orderconfirm.htm" target="new" menubar=0 copyhistory=0 location=0 scrollbars=1><img src="checkout.gif"></a><br>');

//			document.writeln('</form>');
		}
		// otherwise check if the cookie has the specified item
		else
		{
			// scan cookie for item
			var itemFound = false;
			start = 0;
			end = 0;
			// cookieString = document.cookie;
			// var name = "FACE_Order";

			i = 0;

			while (i <= cookieString.length)
			{
				start = i;
				end = start + item.length;
				if (cookieString.substring(start,end) == item) 	
				{
					itemFound = true;
					break; 
				}
				i++; 
			}
			if (itemFound)
			{
				// how many?
				var qty = 0;
				i = end + 1;
				start = i; // points to start of quantity
				while (i <= cookieString.length)
				{
					if (cookieString.substring(i, i+1) == '@')
					{
						qty = cookieString.substring(end+1, i);
						break;
					}
					i++;
				}
				document.writeln('<p>Your order includes ' + qty + ' off ' + item);
			}
		}
	}	
}

function orderconfirm()
{
	var cookieString = getcookie("FACE_Order");

	order = open("","Order_Confirm","menubar=0,copyhistory=0,location=0,scrollbars=1");

	order.document.write('<html><head><title>Checkout</title><script language="javascript" src="orderformprocess.js"></script></head><body>');
	order.document.write("<H1>Checkout</H1>");
	order.document.write("<b>Your order contains the following items:</b><br>");

	order.document.write('<form name="confirm">');

	order.document.write("<table border=1>");
	order.document.write("<tr><td width=150>Product</td><td width=150>Quantity</td><td width=150>Price</td><td width=150>Line value</td></tr>");

	var i = 0;
	var item = "";
	var qty = "";
	var price = "";
	var ordervalue = 0;
	var line = 1;

	while (i < cookieString.length)
	{
		if (cookieString.indexOf("|",i) == -1) break;
		i = cookieString.indexOf("|",i);
		if (cookieString.indexOf("*",i) == -1) break;
		if (cookieString.indexOf("@",i) == -1) break;
		if (cookieString.indexOf("|",i+1) == -1) break;
		item = cookieString.substring(i+1,cookieString.indexOf("*",i));
		qty = cookieString.substring(cookieString.indexOf("*",i)+1,cookieString.indexOf("@",i));
		price = cookieString.substring(cookieString.indexOf("@",i)+1,cookieString.indexOf("|",i+1));
		order.document.write("<tr><td>"+item+"</td><td>"+qty+"</td><td>£"+price+"</td><td>£"+price * qty+"</td></tr>");
//		order.document.write('<input type="hidden" name="line'+line+'" value="'+qty+' off '+item+' @ £'+price+' each">');
		line++;
		ordervalue += price * qty;
		i++;
	}

	order.document.write("</table>");

	order.document.write("<p>Total Order Value: £"+ordervalue+"<br>");
//	order.document.write('<input type="button" name="Cancel" value="Return to Catalogue" onclick="window.close();"><br>');
	order.document.write('<hr>');

	cookieString = getcookie("FACE_Customer");

	var company ="";
	var attention = "Goods Inwards";
	var deladdress = "As Invoice";
	var invaddress = "";
	var contact = "";
	var email = "";
	var telephone = "";
	var orderref = "";
	
	if (cookieString != null)
	{
		i = cookieString.indexOf("|",0);
		company = cookieString.substring(i+1,cookieString.indexOf("|",i+1));
		i = cookieString.indexOf("|",i+1);
		attention = cookieString.substring(i+1,cookieString.indexOf("|",i+1));
		i = cookieString.indexOf("|",i+1);
		deladdress = cookieString.substring(i+1,cookieString.indexOf("|",i+1));
		i = cookieString.indexOf("|",i+1);
		invaddress = cookieString.substring(i+1,cookieString.indexOf("|",i+1));
		i = cookieString.indexOf("|",i+1);
		contact = cookieString.substring(i+1,cookieString.indexOf("|",i+1));
		i = cookieString.indexOf("|",i+1);
		email = cookieString.substring(i+1,cookieString.indexOf("|",i+1));
		i = cookieString.indexOf("|",i+1);
		telephone = cookieString.substring(i+1,cookieString.indexOf("|",i+1));
		i = cookieString.indexOf("|",i+1);
		orderref = cookieString.substring(i+1,cookieString.indexOf("|",i+1));
	}
	
	order.document.write("<table border=0>");
	order.document.write('<tr><td colspan=2><b>Customer details:</b><br>(required)<td colspan=2><b>Delivery details:</b><br>(optional)</td>');
	order.document.write('<tr><td width=200>Company name:</td><td width=250><input type="text" name="company" value="'+company+'" size="20"></td><td>For attention of:</td><td><input type="text" name="attention" value="'+attention+'" size="20"></td></tr>');
	order.document.write('<tr><td width=200>Invoice address:</td><td width=250><textarea name="invaddress" rows="4" cols="20">'+invaddress+'</textarea></td><td width=200>Delivery address:</td><td width=250><textarea name="deladdress" rows="4" cols="20">'+deladdress+'</textarea></td></tr>');
	order.document.write('<tr><td width=200>Order reference:</td><td width=250><input type="text" name="orderref" value="'+orderref+'" size="20"></td><td></td><td></td></tr>');
	order.document.write("</table>");
	order.document.write('<hr>');

	order.document.write("<b>Contact details:</b>");
	
	order.document.write("<table border=0>");
	order.document.write('<tr><td width=200>Order placed by:</td><td width=250><input type="text" name="contact" value="'+contact+'" size="20"></td></tr>');
	order.document.write('<tr><td>Email address:</td><td><input type="text" name="email" value="'+email+'" size="20"></td></tr>');
	order.document.write('<tr><td>Telephone:</td><td><input type="text" name="telephone" value="'+telephone+'" size="20"></td></tr>');
	order.document.write("</table><hr>");

	order.document.write('Most products are built to order - this allows us to offer a wide range of varients and options.  Delivery is usually 2-4 weeks from receipt of payment.<p>');
	order.document.write('When we receive your order, we will contact you to arrange payment and confirm delivery dates. We usually require full payment with your order, although if a longer delivery date is anticipated we will ask for 50% with order and the balance to be paid before delivery.<p>');
	order.document.write('Carriage costs will be added to the total.  UK carriage costs £30 per delivery.  International carriage costs will be advised when we confirm delivery date.<p>');
	order.document.write('Press "Save order details" to create an email with your order details.<p>');

	order.document.write('<input type="button" name="save" value="Save order details" onClick="saveandsendemail(document.confirm.company.value,document.confirm.attention.value,document.confirm.deladdress.value,document.confirm.invaddress.value,document.confirm.contact.value,document.confirm.email.value,document.confirm.telephone.value,document.confirm.orderref.value)">');
	order.document.write('<input type="button" name="Cancel" value="Return to Catalogue" onClick="window.close()">');
	order.document.write('</form>');
	order.document.write("</body></html>");
}

function getorderdetails()
{
	open("","Order_Confirm","menubar=0,copyhistory=0,location=0,scrollbars=1");
//<script language="javascript" src="orderformprocess.js"></script>

	document.write('<html><head><title>Order confirm</title></head><body>');

	var cookieString = getcookie("FACE_Order");

	document.write("<H1>Order Confirm</H1>");
	document.write("<b>Your order contains the following items:</b><br>");

	document.write("<table border=1>");
	document.write("<tr><td width=150>Product</td><td width=150>Quantity</td><td width=150>Price</td><td width=150>Line value</td></tr>");

	var i = 0;
	var item = "";
	var qty = "";
	var price = "";
	var ordervalue = 0;
	var line = 1;

	while (i < cookieString.length)
	{
		if (cookieString.indexOf("|",i) == -1) break;
		i = cookieString.indexOf("|",i);
		if (cookieString.indexOf("*",i) == -1) break;
		if (cookieString.indexOf("@",i) == -1) break;
		if (cookieString.indexOf("|",i+1) == -1) break;
		item = cookieString.substring(i+1,cookieString.indexOf("*",i));
		qty = cookieString.substring(cookieString.indexOf("*",i)+1,cookieString.indexOf("@",i));
		price = cookieString.substring(cookieString.indexOf("@",i)+1,cookieString.indexOf("|",i+1));
		document.write("<tr><td>"+item+"</td><td>"+qty+"</td><td>£"+price+"</td><td>£"+price * qty+"</td></tr>");
		document.write('<input type="hidden" name="line'+line+'" value="'+qty+' off '+item+' @ £'+price+' each">');
		line++;
		ordervalue += price * qty;
		i++;
	}

	document.write("</table>");

	document.write("<p>Total Order Value: £"+ordervalue+"<br>");

	document.write('<hr><input type="button" name="save" value="Save order details" onClick="saveandsendemail()">');
	document.write("</body></html>");
}

function saveandsendemail(company,attention,deladdress,invaddress,contact,email,telephone,orderref)
{
	var newstring = "|";
	newstring += company+"|";
	newstring += attention+"|";
	newstring += deladdress+"|";
	newstring += invaddress+"|";
	newstring += contact+"|";
	newstring += email+"|";
	newstring += telephone+"|";
	newstring += orderref+"|";
	expires = new Date();
	expires.setTime(expires.getTime() + 24 * 60 * 60 *365 * 1000);
	setcookie("FACE_Customer", newstring, expires);

	order = open("","Order_Confirm","menubar=0,copyhistory=0,location=0,scrollbars=1");
	order.document.write('<html><head><title>Order confirm</title><script language="javascript" src="orderformprocess.js"></script></head><body>');
	order.document.write("<H1>Create Order email</H1><b>The following email will be sent:</b><hr>");

//	order.document.write('<form method="post" action="http://www.facesystems.com/cgi-bin/form_to_mail.php">');
	order.document.write('<form method="post"  onSubmit="deleteorder();" action="http://www.facesystems.com/cgi-bin/form_to_mail.php">');
	order.document.write('<input type="hidden" name="recipient" value="sales@facesystems.com"><b>To:</b> sales@facesystems.com<p>');
	order.document.write('<input type="hidden" name="from" value="orderform@facesystems.com"><b>From:</b> orderform@facesystems.com<p><hr>');

	order.document.write('<b>Purchase Order to FACE Systems</b><p>');
	order.document.write('From:<br> '+company+'<br>'+encodelines(invaddress)+'<br>Ref: '+orderref+'<p>');
	order.document.write('<input type="hidden" name="company" value="'+company+'">');
	order.document.write('<input type="hidden" name="invaddress" value="'+invaddress+'">');
	order.document.write('<input type="hidden" name="orderref" value="'+orderref+'">');

	order.document.write('Deliver to:<br> '+encodelines(deladdress)+'<br>FAO: '+attention+'<p>');
	order.document.write('<input type="hidden" name="deladdress" value="'+deladdress+'">');
	order.document.write('<input type="hidden" name="attention" value="'+attention+'">');

	order.document.write('<hr><b>Please supply:</b><p>');


	var cookieString = getcookie("FACE_Order");

	order.document.write("<table border=1>");
	order.document.write("<tr><td width=150>Product</td><td width=150>Quantity</td><td width=150>Price</td><td width=150>Line value</td></tr>");

	var i = 0;
	var item = "";
	var qty = "";
	var price = "";
	var ordervalue = 0;
	var line = 1;

	while (i < cookieString.length)
	{
		if (cookieString.indexOf("|",i) == -1) break;
		i = cookieString.indexOf("|",i);
		if (cookieString.indexOf("*",i) == -1) break;
		if (cookieString.indexOf("@",i) == -1) break;
		if (cookieString.indexOf("|",i+1) == -1) break;
		item = cookieString.substring(i+1,cookieString.indexOf("*",i));
		qty = cookieString.substring(cookieString.indexOf("*",i)+1,cookieString.indexOf("@",i));
		price = cookieString.substring(cookieString.indexOf("@",i)+1,cookieString.indexOf("|",i+1));
		order.document.write("<tr><td>"+item+"</td><td>"+qty+"</td><td>£"+price+"</td><td>£"+price * qty+"</td></tr>");
		order.document.write('<input type="hidden" name="line'+line+'" value="'+qty+' off '+item+' @ £'+price+' each">');
		line++;
		ordervalue += price * qty;
		i++;
	}

	order.document.write("</table>");
	order.document.write("<p>Total Order Value: £"+ordervalue+"<br>");

	order.document.write('<hr><b>Order placed by:</b><br> '+contact+'<br>Email: '+email+'<br>Telephone: '+telephone+'<p>');
	order.document.write('<input type="hidden" name="contact" value="'+contact+'">');
	order.document.write('<input type="hidden" name="email" value="'+email+'">');
	order.document.write('<input type="hidden" name="telephone" value="'+telephone+'"><hr>');

	order.document.write('<P><input type="submit" value=" Send Order Email ">');
	order.document.write('<input type="reset" value=" Return to catalogue ">');

	order.document.write('</form>');
	order.document.write("</body></html>");
}

function deleteorder()
{
	delcookie("FACE_Order");
}

function encodelines(str)
{
	var dest = "";
	var len = str.length;
	var index = 0;
	var code = null;
	for (var i = 0; i < len; i++)
	{
		var ch = str.charAt(i);
		if (ch == "\n") code = "<br>";
//		else if (ch == "%") code = "%25";
//		else if (ch == ",") code = "%2C";
//		else if (ch == ";") code = "%3B";
//		else if (ch == "\b") code = "%08";
//		else if (ch == "\t") code = "%09";
//		else if (ch == "\n") code = "%0A";
//		else if (ch == "\f") code = "%0C";
//		else if (ch == "\r") code = "%0D";
		if (code != null)
		{
			dest += str.substring(index,i) + code;
			index = i + 1;
			code = null;
		}
	}
	if (index < len) dest += str.substring(index, len);
	return dest;
}

/////////////////////////////////////////////////////////////////////////////////////////////////
//
//	Basic cookie handling
//
//	encode(str)			remove and encode whitespace and other not allowed characters
//	decode(str)			replace encoded characters
//	getcookie(name)			get string content of named cookie
//	setcookie(name,value,expires)	create or change a cookie
//	delcookie(name)			delete named cookie, by setting old expiry date
//
////////////////////////////////////////////////////////////////////////////////////////////////

function encode(str)
{
	var dest = "";
	var len = str.length;
	var index = 0;
	var code = null;
	for (var i = 0; i < len; i++)
	{
		var ch = str.charAt(i);
		if (ch == " ") code = "%20";
		else if (ch == "%") code = "%25";
		else if (ch == ",") code = "%2C";
		else if (ch == ";") code = "%3B";
		else if (ch == "\b") code = "%08";
		else if (ch == "\t") code = "%09";
		else if (ch == "\n") code = "%0A";
		else if (ch == "\f") code = "%0C";
		else if (ch == "\r") code = "%0D";
		if (code != null)
		{
			dest += str.substring(index,i) + code;
			index = i + 1;
			code = null;
		}
	}
	if (index < len) dest += str.substring(index, len);
	return dest;
}


function decode(str)
{
	var dest = "";
	var len = str.length;
	var index = 0;
	var code = null;
	var i = 0;
	while (i < len)
	{
		i = str.indexOf("%",i);
		if (i == -1) break;
		if (index < i) dest += str.substring(index,i);
		code = str.substring(i+1,i+3);
		i += 3;
		index = i;
		if (code == "20") dest += " ";
		else if (code == "25") dest += "%";
		else if (code == "2C") dest += ",";
		else if (code == "2B") dest += ";";
		else if (code == "08") dest += "\b";
		else if (code == "09") dest += "\t";
		else if (code == "0A") dest += "\n";
		else if (code == "0C") dest += "\f";
		else if (code == "0D") dest += "\r";
		else
		{
			i -= 2;
			index -= 3;
		}
	}
	if (index < len) dest += str.substring(index, len);
	return dest;
}

function getcookie(name)
{
	var arg = name += "=";
	var alen = arg.length;
	var clen = document.cookie.length;
	var i = 0;
	while (i < clen)
	{
		var j = i + alen;
		if (document.cookie.substring(i, j) == arg)
		{
//			return getCookieVal(j);
			var endstr = document.cookie.indexOf(";", j);
			if (endstr == -1) endstr = document.cookie.length;
			return decode(document.cookie.substring(j, endstr));
		}
		i = document.cookie.indexOf(" ", i) + 1;
		if (i == 0) break;
	}
	return null;
}

function setcookie(name, value, expires)
{
	document.cookie = name + "=" + encode(value) + ((expires == null)? "" : ("; expires=" + expires.toGMTString()));
}

function delcookie(name)
{
	var exp = new Date();
	exp.setTime(exp.getTime() - 24 * 60 * 60 * 1000);
	var cval = getcookie(name);
	document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
}
