// generic data and functions for product page displays

var product = new Array(); // product data js files will add to this array
var popform;
var ULDesc;
var orderStatus;
var orderSummary;
var wholeBox;
var prodCatNav;
var ready = false;
var sw; //screen width
var sh; //screen height

var orderSubTotal     = 0;
var orderTaxableTotal = 0;
var orderWeightTotal  = 0;
var orderGrandTotal   = 0;
	
var descriptions = new Array();

var outlinetop = '<table cellpadding="0" cellspacing="0" border="0" width="300"><tr><td width="300" height="12" border="0"><img src="/images/shop_feature_box_top.gif" width="300" height="12" border="0"></td></tr><tr><td><table cellpadding="0" cellspacing="0" border="0" width="300"><tr><td width="1" bgcolor="#3C3C3C"><img src="/images/t.gif" width="1" height="1" border="0"></td><td width="298">';
var outlinebot = '</td><td width="1" bgcolor="#3C3C3C"><img src="/images/t.gif" width="1" height="1" border="0"></td></tr></table></td></tr><tr><td width="300" height="12" border="0"><img src="/images/shop_feature_box_bottom.gif" width="300" height="12" border="0"></td></tr></table>';

descriptions['intro'] = outlinetop + "<div class='generalDescription'><p>&nbsp;&nbsp;&nbsp;&nbsp;<b>To order:</b> Choose an item from the list on the right. The item will appear here, in this box. Configure any available options (such as quantity, grind, color) and click the &quot;BUY&quot; button to add the item to your order. When you are ready to pay for your order, click the &quot;CHECKOUT&quot; button, above.</p></div>" + outlinebot;
descriptions['pollys'] = outlinetop + "<div class='generalDescription'><span class='indent'>The coffees offered here are supplied by Polly's Gourmet Coffee, an independent coffee roaster in Long Beach, California. They roast coffee in small batches and ship it to you fresh. They keep a close eye on quality and deliver a carefully crafted product. They've been pleasing coffee connoisseurs since 1976 and serving online customers for more than three years. <a href='#' onClick=\"window.open('buzz_pollysProfile.html','resource','height=480,width=640,resizable=yes,toolbar=yes,location=yes,scrollbars=yes'); return false;\">read more ...</a><br><span class='ontheright'><a href='#' onClick='parent.popDesc(\"intro\"); return false;'><img src='/images/remove_item.gif' height=10 width=10 border=0></a></span></div>" + outlinebot;
descriptions['justbought'] = outlinetop + "<div class='generalDescription'>Good Choice!</div>" + outlinebot;
descriptions['emptyorder'] = outlinetop + "<span class='generalDescription'>&nbsp;&nbsp;&nbsp;&nbsp;Your order is empty.</span>" + outlinebot;

function units_lb() { return ((arguments.length!=0 && arguments[0])? 'lbs':'lb'); }
function units_oz() { return ((arguments.length!=0 && arguments[0])? 'oz':'oz'); }
function units_each() { return ''; }


function popformsub(formref) {
	var thisItem = form2XML(formref,new Array('UIID',new Date().getTime()));
	if (arguments.length>1) {
		var thisOpts = form2XML(arguments[1],new Array());
		thisItem.addElement(thisOpts);
		}
	addToCookieBasket(thisItem.toXML());
	showOrder();
	}

// Each product page should define it's own formpop() function.
// Maybe delete the guts of this one and just return true?
function formpop(PLU) {
	if (ready) {
		var item = product[PLU];
		var formcode = '';
		formcode = '<form name="ITEM"><input type=hidden name="TYPE" value="coffee"><input type=hidden name="UNITS" value="';
		formcode += item['UNITS'](false);
		formcode += '"><input type=hidden name="PRODNAME" value="';
		formcode += item['NAME'];
		formcode += '"><input type=hidden name="PRICE" value="';
		formcode += item['PRICE'];
		formcode += '"><input type=hidden name="UNITWEIGHT" value="';
		formcode += item['UNITWEIGHT'];
		formcode += '">';
		formcode += '<table border=0 cellpadding=0 cellspacing=0 WIDTH=298><TR><TD width=298 ALIGN="center"><img src="/images/coffee_bag.jpg" width="63" height="115"><br><img src="/images/t.gif" width="1" height="10"></TD></TR><tr><td bgcolor="#FF9933"><span class="prodTitle">&nbsp;';
		formcode += unescape(item['NAME']);
		formcode += '</span></TD></TR><TR><TD><img src="/images/t.gif" width="1" height="5"><br>';
		formcode += '<span class="generalDescription">' + item['DESCRIPTION'] + '</span></TD></TR><TR><TD ALIGN="center"><img src="/images/t.gif" width="1" height="5"><br>';
		formcode += '<span class="subhead"><b>Price: $';
		formcode += item['PRICE'] + '/' + item['UNITS'](false);
		formcode += '</b></span></TD></TR><TR><TD ALIGN="center" valign="top">';
		formcode += ' <table cellpadding=2 cellspacing=0 border=0><tr>';
		formcode += ' <td><SELECT NAME="QUANTITY" class="sboxes"><OPTION value="0.25">1/4 lb.</OPTION><OPTION value="0.5">1/2 lb.</OPTION><OPTION SELECTED value="1">1 lb.</OPTION><OPTION value="2">2 lbs.</OPTION><OPTION value="3">3 lbs.</OPTION><OPTION value="4">4 lbs.</OPTION><OPTION value="5">5 lbs.</OPTION></SELECT></td><td>&nbsp;</td>';
		formcode += ' <td><SELECT NAME="GRIND" class="sboxes"><OPTION value="whole bean" SELECTED>whole bean</OPTION><OPTION value="drip">drip</OPTION><OPTION value="coarse">coarse</OPTION><OPTION value="fine">fine</OPTION><OPTION value="espresso">espresso</OPTION></SELECT></td>';
		formcode += ' <td><a href="#" onclick="document.ITEM.PRICE.value=figurePrice(document.ITEM.PRICE.value,document.ITEM.QUANTITY.options[document.ITEM.QUANTITY.options.selectedIndex].value,document.ITEM.TYPE.value); document.ITEM.UNITS.value=((parseFloat(document.ITEM.QUANTITY.options[document.ITEM.QUANTITY.options.selectedIndex].value)>1)?\''+item['UNITS'](true)+'\':\''+item['UNITS'](false)+'\'); parent.popformsub(document.ITEM); return false;"><img src="/images/buy_button_2.gif" width="40" height="20" border="0"></a></td>';
		formcode += ' </tr></table>';
		formcode += '</td></tr></table></form>';
		ULDesc.hide();
		orderSummary.hide();
		popform.write(outlinetop + formcode + outlinebot);
		popform.show();
		}
	else {
		window.status = "Just a moment - page still loading ...";
		}
	return false;
	}

function orderStatusUpdate() {
	ordcook = unescape(parent.getCookie('ORDER'));
	pc = (ordcook == null)? 0:(ordcook.split('<ITEM').length - 1);
	orderStatus.write('<span class="orderStatusText"><b>Your Order:</b> <a href="#" onclick="showOrder(); return false;">' + pc + ' item' + ((pc==1)? '':'s') + '</a> | <a href="#" onclick="alert(\'not yet\'); return false;">Checkout</a> | <a href="#" onClick="deleteCookie(\'ORDER\'); orderStatusUpdate(); popDesc(\'intro\'); return false;">Cancel</a></span>');
	orderStatus.show();
	}
		
function showOrder() {
	var stateTaxFlag = (arguments.length>0 && arguments[0])? 1:0;
	popform.write(''); popform.hide();
	//ULDesc.write(descriptions['justbought']); ULDesc.show();
	ULDesc.hide();
	var ordcook = unescape(parent.getCookie('ORDER'));
	// display order, if there's anything in it
	if (ordcook && ordcook.indexOf("<ITEM") != -1) {
		var ORDERITEMS = parseXML(ordcook);
		orderSubTotal   = 0;
		orderTaxableTotal = 0;
		orderWeightTotal = 0;
		orderGrandTotal = 0;
		var orderDisplay = "<table cellpadding=0 cellspacing=0 border=0 width=298><tr><td width=298 class='origchar'>&nbsp;Your Order:</td></tr></table>";
		orderDisplay += "<br><table cellpadding=0 cellspacing=0 border=0 width=294 align=right>";
		orderDisplay += "<tr bgcolor='#FFFFFF'><td width='39' height='1'><img src='/images/t.gif' width='39' height='1' border='0'></td><td width='184'><img src='/images/t.gif' width='184' height='1' border='0'></td><td width='30'><img src='/images/t.gif' width='30' height='1' border='0'></td><td width='15'><img src='/images/t.gif' width='15' height='1' border='0'></td></tr>";
		orderDisplay += "<tr bgcolor='#CC6600'><td height='16' class='prodTitleWhite'>qty</td><td class='prodTitleWhite'>description</td><td class='prodTitleWhite' align='right'>price</td><td bgcolor='#FFFFFF'>&nbsp;</td></tr>";
		
		for (var di=0;di<ORDERITEMS.children.length;++di) {
			var displayprice;
			var calcprice;
			var thisITEMname = ORDERITEMS.children[di].name;
			var thisITEMid = ORDERITEMS.children[di].attributes['UIID'];
			var thisITEM = new Array()
			for (var ii=0;ii<ORDERITEMS.children[di].children.length;++ii) {
				thisITEM[ORDERITEMS.children[di].children[ii].name] = ORDERITEMS.children[di].children[ii].toText();
				if (ORDERITEMS.children[di].children[ii].name=='OPTIONS') {
					thisITEM[ORDERITEMS.children[di].children[ii].name] = ORDERITEMS.children[di].children[ii];
					}
				else { thisITEM[ORDERITEMS.children[di].children[ii].name] = ORDERITEMS.children[di].children[ii].toText(); }
				}
			fracpnd = (thisITEM['QUANTITY'] < 1)? 0.15:0;
			displayquant = (thisITEM['QUANTITY'] < 1)? '1/' + (1/thisITEM['QUANTITY']):thisITEM['QUANTITY'];
			displayprice = thisITEM['PRICE'];
			orderDisplay += "<tr valign=top><td>" + displayquant + " " + thisITEM['UNITS'] + "</td>";
			orderDisplay += "<td><STRONG>" + thisITEM['PRODNAME'] + "</STRONG>";
			//optional attributes
			if (thisITEM['OPTIONS']) {
				for (var iii=0;iii<thisITEM['OPTIONS'].children.length;++iii) {
					orderDisplay += ((thisITEM['OPTIONS'].children[iii].name)? ("<br>&nbsp;&nbsp;&nbsp;&nbsp;" + new String(thisITEM['OPTIONS'].children[iii].name).toLowerCase() + ": " + thisITEM['OPTIONS'].children[iii].toText()):'no options');
					}
				}
			orderDisplay += "</td><td align=right>" + displayprice + "</td>";
			orderDisplay += "<td align='center'><a href='#' onclick='removeFromCookieBasket(\"" + thisITEMname + "\",\"" + thisITEMid + "\"); showOrder(); return false;'><img src='/images/remove_item.gif' width=10 height=10 vspace=2 border=0 alt='delete'></a></td></tr>";
			
//			calcprice    = eval(displayprice);
//			orderTaxableTotal+= calcprice * eval(thisITEM['TAXABLE'];
			orderSubTotal += Math.floor(eval(displayprice)*100 + 0.000001);
			orderWeightTotal = (isNaN(thisITEM['UNITWEIGHT']) || orderWeightTotal=='unknown')? 'unknown':(orderWeightTotal+parseFloat(thisITEM['UNITWEIGHT'])*parseFloat(thisITEM['QUANTITY']));
			}
		orderSubTotal = orderSubTotal.toString();
		orderSubTotal = orderSubTotal.substring(0,orderSubTotal.length-2) + '.' + orderSubTotal.substring(orderSubTotal.length-2,orderSubTotal.length);
//		orderTaxTotal = stateTaxFlag * stateTaxRate * orderTaxableTotal;

		orderDisplay += "<tr><td colspan=3><img src='/images/b.gif' width='279' height='1' vspace='4'></td><td></td></tr>";
		orderDisplay += "<tr><td></td><td align=right><b>subtotal</b>&nbsp;&nbsp;</td><td align=right>" + orderSubTotal + "</td><td></td></tr></table>";

		orderSummary.write(outlinetop + orderDisplay + outlinebot);
		orderSummary.show();
		
		//orderStatusUpdate();
		}
	// otherwise notify that order is empty
	else {
		//orderDisplay = '<span class="generalDescription">&nbsp;&nbsp;&nbsp;&nbsp;Your coffee order is empty. Choose a coffee from the list, select your preferred quantity and grind, then click \'add\' to add the coffee to your order.</span>';
		popDesc('emptyorder');
		}
	}

function checkout() {
	ULDesc.hide();
	popform.hide();
	orderSummary.hide();
	if (getCookie('ORDER')) {
		var formcode = '';
		orditms = parseXML(unescape(getCookie('ORDER')));
		orditms.name='ORDER';
		orditms.addAttributes(new Array('ORDERNUMBER',new Date().getTime()));
		document.checkoutdata.ORDER.value=escape(orditms.toXML());
		formcode += '<form name="useraccount" onsubmit="return false;">';
		formcode += '<table border=0 cellpadding=0 cellspacing=5 WIDTH=298>';
		formcode += '<tr><td WIDTH=298 class="origchar">&nbsp;Begin Checkout</TD></TR>';
		formcode += '<TR><TD><img src="/images/t.gif" width="1" height="5"><br>';
		formcode += '<span class="generalDescription"><strong>email address</strong></span></TD></TR>';
		formcode += '<TR><TD ALIGN="center"><input type="text" name="user" value="'+((custemail)?custemail:'')+'" size="20"></TD></TR>';
		formcode += '<TR><TD><img src="/images/t.gif" width="1" height="5"><br>';
		formcode += '<span class="generalDescription"><strong>password or ZIP code</strong></span></TD></TR>';
		formcode += '<TR><TD ALIGN="center"><input type="text" name="pass" value="" size="20"></TD></TR>';
		formcode += '<TR><TD><img src="/images/t.gif" width="1" height="5"></TR></TD>';
//		formcode += '<TR><TD ALIGN="center"><a href="proceed" onclick="window.document.checkoutdata.user.value=document.useraccount.user.value; window.document.checkoutdata.pass.value=document.useraccount.pass.value; window.document.checkoutdata.orderWeightTotal.value=orderWeightTotal; setCookie(\'LASTORDER\',getCookie(\'ORDER\')); setCookie(\'ORDER\',\'\'); window.document.checkoutdata.submit(); return false;"><img src="/images/button_proceed.gif" width="98" height="20" border="0"></a></TD></TR>';
		formcode += '<TR><TD ALIGN="center"><a href="proceed" onclick="window.document.checkoutdata.user.value=document.useraccount.user.value; window.document.checkoutdata.pass.value=document.useraccount.pass.value; window.document.checkoutdata.orderWeightTotal.value=orderWeightTotal; setCookie(\'LASTORDER\',getCookie(\'ORDER\'));                            window.document.checkoutdata.submit(); return false;"><img src="/images/button_proceed.gif" width="98" height="20" border="0"></a></TD></TR>';
		formcode += '</table></form>';
		popform.write(outlinetop + formcode + outlinebot);
		popform.show();
		}
	else {
		popDesc('emptyorder');
		}
	return false;
	}


function popDesc(tl) {
	popform.write('');
	popform.hide();
	ULDesc.write(descriptions[tl]);
	ULDesc.show();
	orderSummary.hide();
	//showOrder();
	//orderStatusUpdate();
	}


function figurePrice(ppriceper,pquant,ptype) {
	var rprice = "NaN";
	if (ptype == 'tea') {
		rprice =  parseInt(Math.round(pquant*ppriceper*100));
		}
	else if (ptype == 'coffee') {
		var wholepoundsprice = Math.round(Math.floor(pquant) * ppriceper * 100); // the outermost "Math.round()" is there to work around a weird bug where 9.95*100 yields 994.9999999999999
		var partpoundprice = 0;
		if ((pquant - Math.floor(pquant)) > 0) {
			partpoundprice = Math.round((pquant - Math.floor(pquant)) * Math.round(ppriceper * 100)) + 15; // 15 cents for the bag on a half or quarter pound
			}
		rprice = (wholepoundsprice + partpoundprice);
		}
	else if (ptype == 'tea') { //"Tea,Spice,Nut,Candy" 
		rprice = Math.round(pquant*ppriceper*100);
		}
	else if (ptype == 'equipment') {
		rprice = Math.round(pquant*ppriceper*100);
		}
	else if (ptype == 'gifts') {
		rprice = Math.round(pquant*ppriceper*100);
		}
	rprice = new String(rprice);
	return (rprice!="NaN")? rprice.substring(0,rprice.length-2) + "." + rprice.substring(rprice.length-2,rprice.length):"NaN";
	}

function vectorpop() {
	var ptni = location.search.indexOf('popto=') + 6;
	if (ptni != 5) {
		var pn = location.search.substring(ptni,ptni + 6);
		if (pn.length == 6 && pn.indexOf('PGC') == 0) {formpop(pn);}
		}
	}
