// ================================================================
// These are local variables to be changed to support what is
// actually being used
// ================================================================
var imgEditCart = "image/sbtn-edit1.gif";
var imgRemoveCart = "image/sbtn-remove1.gif";
var locCheckoutCart = "https://www.cobraaccessories.com/dasCheckoutCart.html";
var locWriteOrder = "https://www.cobraaccessories.com/cgi-bin/dasWriteOrder.cgi";
var thisDomain = "cobraaccessories.com";

// Size of Add to Cart and Edit Cart windows
var widthEditWin = 400;
var heightEditWin = 400;

// Size of Show and Checkout windows
var widthShowWin = 600;
var heightShowWin = 500;

// Size of Processing Cart windows
var widthProcessCart = 250;
var heightProcessCart = 300;

// Display shipping, handling and taxes on checkout cart?
var showShipping = 0;
var showHandling = 0;
var showTaxes = 1;
var isCheckout = 0;
// ================================================================

//
//	dasCart - Shopping Cart from David A. Somner
//	Copyright (c) 2001 by David A. Somner
//
//	Cookie Name		Cookie Value
//	====================	=============================
//	dasCN- + CartName	Cart Name
//	dasNI- + CartName	Number of Items in Cart
//	dasCO- + CartName	Cart Order
//	dasTN			Transfer Cart Name
//	dasTI			Transfer SKU / ID Number
//	dasTD			Transfer Description
//	dasTQ			Transfer Quantity
//	dasTP			Transfer Price
//	dasTW			Transfer Weight
//	dasTS			Transfer Shipping Cost
//	dasTH			Transfer Handling Cost
//	dasTT			Tranfer Taxable?
//	dasTL			Transfer Location
//	dasTX			Transfer Index Number
//
//
//	Order Text Name		Order Text Value
//	====================	=============================
//	#PxI-x-PxI#		Product # "x" - SKU / ID Number
//	#PxD-x-PxD#		Product # "x" - Description
//	#PxQ-x-PxQ#		Product # "x" - Quantity
//	#PxP-x-PxP#		Product # "x" - Price
//	#PxW-x-PxW#		Product # "x" - Weight
//	#PxS-x-PxS#		Product # "x" - Shipping Cost
//	#PxH-x-PxH#		Product # "x" - Handling Cost
//	#PxT-x-PxT#		Product # "x" - Taxable? ('yes' or 'no')
//
//
//	Utility Functions
//	======================================================
//	initCart(CartName)
//	reinitCart(CartName)
//	askCart(IDNum, ProdName, ProdPrice, ProdWt, ProdShp, ProdHdl, ProdTaxable)
//	showCart()
//	checkoutCart()
//	loadCheckoutCart()
//	askMCart(CartName, IDNum, ProdName, ProdPrice, ProdWt, ProdShp, ProdHdl, ProdTaxable)
//	showMCart(CartName)
//	checkoutMCart(CartName)
//	loadCheckoutMCart(CartName)
//	makeCurrency(anynum)
//
//	Transfer Functions
//	======================================================
//	transferCart()
//	transferProduct()
//	getTransferIDNum()
//	getTransferProdName()
//	addTransferToCart()
//
//	Single Cart Functions
//	======================================================
//	getCartName()
//	getCartNumItems()
//	getCartIDNum(idx)
//	getCartProduct(idx)
//	getCartQty(idx)
//	getCartPrice(idx)
//	addCartProduct(IDNum, ProdName, ProdQty, ProdPrice, ProdWt, ProdShp, ProdHdl, ProdTaxable)
//	setCartQty(idx, qty)
//
//	Multi-Cart Functions
//	======================================================
//	getMCartNumItems(CartName)
//	getMCardIDNum(CartName, idx)
//	getMCartProduct(CartName, idx)
//	getMCartQty(CartName, idx)
//	getMCartPrice(CartName, idx)
//	addMCartProduct(CartName, IDNum, ProdName, ProdQty, ProdPrice, ProdWt, ProdShp, ProdHdl, ProdTaxable)
//	setMCartQty(CartName, idx, qty)
//

// Local variables
var thisCart;			// Name of this cart
var expdateCart;		// Expiration date of cookies for cart
var dasOrder;                   // Global order variable
var dasCurItemNum;		// Current item number in string
var dasCurItem;			// The text of the current item
var dasTI;			// Transfer SKU / ID Number
var dasTD;			// Transfer Description
var dasTQ;			// Transfer Quantity
var dasTP;			// Transfer Price
var dasTW;			// Transfer Weight
var dasTS;			// Transfer Shipping Cost
var dasTH;			// Transfer Handling Cost
var dasTT;			// Tranfer Taxable?
var dasTL;			// Transfer Location for Edit Cart
var dasTX;			// Transfer Index Number

// Date and Time adjustment
var DATEADJUSTMENT;


//	Utility Functions
//	======================================================
//
// initCart(CartName)
// Initialize a cart for use
//
function initCart(CartName) {
	var checkCart;

	// Set default cookie expiration date and time
	expdateCart = new Date ();
	FixCookieDate (expdateCart); // Correct for Mac date bug - call only once for given Date object!
	expdateCart.setTime (expdateCart.getTime() + (24 * 60 * 60 * 1000)); // 24 hrs from now 

	checkCart = GetCookie("dasCN-" + CartName);

	// If cart is not found, make new cart entry
	if (checkCart != CartName) {	
		// Save aside cart name using universal cookie
                SetCookie("dasCN-" + CartName, CartName, expdateCart, "/");

		// Save aside number of items in cart using universal cookie
                SetCookie("dasNI-" + CartName, "0", expdateCart, "/");

		// Initialize the order
                SetCookie("dasCO-" + CartName, "", expdateCart, "/");
	}

	thisCart = CartName;

	// Get number of items in cart
	idx = getMCartNumItems(CartName);

	// Get the current order
	if (idx >= 1) {
	   dasOrder = GetCookie("dasCO-" + CartName);
	} else {
	   dasOrder = "";
	}

	// Clear current item in use
	dasCurItemNum = 0;
	dasCurItem = "";
}

function reinitCart(CartName) {
	var checkCart;
	var idx;

	// Set default cookie expiration date and time
	expdateCart = new Date ();
	FixCookieDate (expdateCart); // Correct for Mac date bug - call only once for given Date object!
	expdateCart.setTime (expdateCart.getTime() + (24 * 60 * 60 * 1000)); // 24 hrs from now 

	thisCart = CartName;


	// Get number of items in cart
	idx = getMCartNumItems(CartName);

	// Get the current order
	if (idx >= 1) {
	   dasOrder = GetCookie("dasCO-" + CartName);
	} else {
	   dasOrder = "";
	}

	// Clear current item in use
	dasCurItemNum = 0;
	dasCurItem = "";
}


// SINGLE CART FUNCTION - MULTI CART SUPPORT NEEDS TO BE ADDED
// getItemPart(PartName, idx)
function getItemPart(PartName, idx) {
	var txtPartA, txtPartB, txtPart;
	var ndxA, ndxB;

	// Set the search strings
	txtPartA = "#P" + idx + PartName + "-";
	txtPartB = "-P" + idx + PartName + "#";

	// Find this string
	ndxA = dasOrder.indexOf(txtPartA);
	ndxB = dasOrder.indexOf(txtPartB);
	if ((ndxA >= 0) && (ndxB >= 0)) {
	   ndxA += txtPartA.length;
	   txtPart = dasOrder.substring(ndxA, ndxB);
	} else {
	   txtPart = "";
	}

	// Return this value
	return(txtPart);
}


function removeItem(idx) {
	var txtPartA, txtPartB;
	var newOrdA, newOrdB;
	var ndxA, ndxB;
	var tmpName;

	// Set the search strings
	txtPartA = "#P" + idx + "I-";  // Start with Product ID Number
	txtPartB = "-P" + idx + "T#";  // End with Taxable?

	// Find this string
	ndxA = dasOrder.indexOf(txtPartA);
	ndxB = dasOrder.indexOf(txtPartB);
	if ((ndxA >= 0) && (ndxB >= 0)) {
	   // Set new order string
	   ndxB += txtPartB.length;
	   newOrdA = dasOrder.substring(0, ndxA);
	   newOrdB = dasOrder.substring(ndxB, dasOrder.length);
	   dasOrder = newOrdA + newOrdB;

	   // See if order is empty now
	   if (dasOrder.length < 1) {
		// Make SURE order variable is blank
		dasOrder = "";

		// Save aside number of items in cart using universal cookie
                SetCookie("dasNI-" + thisCart, "0", expdateCart, "/");
	   }
	}

	// Initialize the order
        SetCookie("dasCO-" + thisCart, dasOrder, expdateCart, "/");

	// Refresh the displayed cart
	tmpName = "PNU" + Math.round(Math.random() * 100);
	self.open(self.document.location,tmpName,'width='+widthShowWin+',height='+heightShowWin+',menubar=no,location=no,directories=no,status=yes,scrollbars=yes,resizable=yes');
	self.close();
}


function editItem(idx) {
	// Set all transfer cookies
        SetCookie("dasTN", thisCart, expdateCart, "/");
        SetCookie("dasTI", getItemPart("I",idx), expdateCart, "/");
        SetCookie("dasTD", getItemPart("D",idx), expdateCart, "/");
        SetCookie("dasTQ", getItemPart("Q",idx), expdateCart, "/");
        SetCookie("dasTP", getItemPart("P",idx), expdateCart, "/");
        SetCookie("dasTW", getItemPart("W",idx), expdateCart, "/");
        SetCookie("dasTS", getItemPart("S",idx), expdateCart, "/");
        SetCookie("dasTH", getItemPart("H",idx), expdateCart, "/");
        SetCookie("dasTT", getItemPart("T",idx), expdateCart, "/");
        SetCookie("dasTL", self.document.location, expdateCart, "/");
        SetCookie("dasTX", "" + idx, expdateCart, "/");

	// Pop-up window for this
	window.open('dasEditCart.html','editPopUp','width='+widthEditWin+',height='+heightEditWin+',menubar=no,location=no,directories=no,status=no,scrollbars=auto,resizable=yes');
	self.close();
}


// askCart(IDNum, ProdName, ProdPrice, ProdWt, ProdShp, ProdHdl, ProdTaxable)
function askCart(IDNum, ProdName, ProdPrice, ProdWt, ProdShp, ProdHdl, ProdTaxable) {
	askMCart(thisCart, IDNum, ProdName, ProdPrice, ProdWt, ProdShp, ProdHdl, ProdTaxable);
}

// showCart()
function showCart() {
	showMCart(thisCart);
}

// checkoutCart()
function checkoutCart() {
	checkoutMCart(thisCart);
}

// loadCheckoutCart()
function loadCheckoutCart() {
	loadCheckoutMCart(thisCart);
}


// askMCart(CartName, IDNum, ProdName, ProdPrice, ProdWt, ProdShp, ProdHdl, ProdTaxable)
function askMCart(CartName, IDNum, ProdName, ProdPrice, ProdWt, ProdShp, ProdHdl, ProdTaxable) {
	// Set all transfer cookies
        SetCookie("dasTN", CartName, expdateCart, "/");
        SetCookie("dasTI", IDNum, expdateCart, "/");
        SetCookie("dasTD", ProdName, expdateCart, "/");
//      SetCookie("dasTQ", ProdQty, expdateCart, "/");
        SetCookie("dasTP", ProdPrice, expdateCart, "/");
        SetCookie("dasTW", ProdWt, expdateCart, "/");
        SetCookie("dasTS", ProdShp, expdateCart, "/");
        SetCookie("dasTH", ProdHdl, expdateCart, "/");
        SetCookie("dasTT", ProdTaxable, expdateCart, "/");

	// Pop-up window for this
	window.open('dasAddCart.html','addPopUp','width='+widthEditWin+',height='+heightEditWin+',menubar=no,location=no,directories=no,status=no,scrollbars=auto,resizable=yes');
}

// showMCart(CartName)
function showMCart(CartName) {
	// Transfer the cart name for showing the cart
        SetCookie("dasTN", CartName, expdateCart, "/");

	// Pop-up window for this
	window.open('dasShowCart.html','showPopUp','width='+widthShowWin+',height='+heightShowWin+',menubar=no,location=no,directories=no,status=yes,scrollbars=yes,resizable=yes');
}

// checkoutMCart(CartName)
function checkoutMCart(CartName) {
	// Transfer the cart name for checkout
        SetCookie("dasTN", CartName, expdateCart, "/");

	// Pop-up window for this
	window.open(locCheckoutCart,'checkoutPopUp','width='+widthShowWin+',height='+heightShowWin+',menubar=no,location=no,directories=no,status=yes,scrollbars=yes,resizable=yes');
}

// loadCheckoutMCart(CartName)
function loadCheckoutMCart(CartName) {
	checkoutMCart(CartName);
	this.close();
}


// makeCurrency(anynum)
function makeCurrency(anynum) {
       //-- Returns passed number as string in $xxx,xxx.xx format.
       anynum=eval(anynum)
       workNum=Math.abs((Math.round(anynum*100)/100));workStr=""+workNum
       if (workStr.indexOf(".")==-1){workStr+=".00"}
       dStr=workStr.substr(0,workStr.indexOf("."));dNum=dStr-0
       pStr=workStr.substr(workStr.indexOf("."))
       while (pStr.length<3){pStr+="0"}

       //--- Adds comma in thousands place.
       if (dNum>=1000) {
          dLen=dStr.length
          dStr=parseInt(""+(dNum/1000))+","+dStr.substring(dLen-3,dLen)
       }

       //-- Adds comma in millions place.
       if (dNum>=1000000) {
          dLen=dStr.length
          dStr=parseInt(""+(dNum/1000000))+","+dStr.substring(dLen-7,dLen)
       }
       retval = dStr + pStr 
       //-- Put numbers in parentheses if negative.
       if (anynum<0) {retval="("+retval+")"}
       return "$"+retval
}

//
//	Transfer Functions
//	======================================================
//	transferCart()
function transferCart() {
	reinitCart(GetCookie("dasTN"));
}

//	transferProduct()
function transferProduct() {
	// Retrieve the information
	dasTI = GetCookie("dasTI");
	dasTD = GetCookie("dasTD");
//	dasTQ = GetCookie("dasTQ");
	dasTP = GetCookie("dasTP");
	dasTW = GetCookie("dasTW");
	dasTS = GetCookie("dasTS");
	dasTH = GetCookie("dasTH");
	dasTT = GetCookie("dasTT");
}

function transferEditCart() {
	dasTQ = GetCookie("dasTQ");
	dasTL = GetCookie("dasTL");
	dasTX = GetCookie("dasTX");
}

//	getTransferIDNum()
function getTransferIDNum() {
	return(dasTI);
}

//	getTransferProdName()
function getTransferProdName() {
	return(dasTD);
}

//	addTransferToCart()
function addTransferToCart() {
	var qty;

	qty = parseInt(document.QtyForm.myQty.value);

	addMCartProduct(thisCart, dasTI, dasTD, qty, dasTP, dasTW, dasTS, dasTH, dasTT);
	self.close();
}

//	addEditToCart()
function addEditToCart() {
	var qty;

	qty = parseInt(document.QtyForm.myQty.value);

	editCartProduct(dasTX, dasTI, dasTD, qty, dasTP, dasTW, dasTS, dasTH, dasTT);
	doEditClose();
}

// doEditClose()
function doEditClose() {
	var tmpName;

	// Refresh the displayed cart
	tmpName = "PNU" + Math.round(Math.random() * 100);
	self.open(dasTL,tmpName,'width='+widthShowWin+',height='+heightShowWin+',menubar=no,location=no,directories=no,status=yes,scrollbars=yes,resizable=yes');
	self.close();
}


//	Single Cart Functions
//	======================================================
// getCartName()
function getCartName() {
	return(thisCart);
}

// getNumCartItems()
function getCartNumItems() {
	return(getMCartNumItems(thisCart));
}

// getCartIDNum(idx)
function getCartIDNum(idx) {
	return(getMCartIDNum(thisCart, idx));
}

// getCartProduct(idx)
function getCartProduct(idx) {
	return(getMCartProduct(thisCart, idx));
}

// getCartQty(idx)
function getCartQty(idx) {
	return(getMCartQty(thisCart, idx));
}

// getCartPrice(idx)
function getCartPrice(idx) {
	return(getMCartPrice(thisCart, idx));
}

// addCartProduct(IDNum, ProdName, ProdQty, ProdPrice, ProdWt, ProdShp, ProdHdl, ProdTaxable)
function addCartProduct(IDNum, ProdName, ProdQty, ProdPrice, ProdWt, ProdShp, ProdHdl, ProdTaxable) {
	addMCartProduct(thisCart, IDNum, ProdName, ProdQty, ProdPrice, ProdWt, ProdShp, ProdHdl, ProdTaxable);
}

// setCartQty(idx, qty)
function setCartQty(idx, qty) {
	setMCartQty(thisCart, idx, qty);
}


//	Multi Cart Functions
//	======================================================
// getMCartNumItems()
function getMCartNumItems(CartName) {
	var ni;

	ni = parseInt(GetCookie("dasNI-" + CartName));
	if (isNaN(ni)) {
		ni = 0;
	}
	return(ni);
}

// getMCartIDNum(idx)
function getMCartIDNum(CartName, idx) {
	return(getItemPart("I", idx));
}

// getMCartProduct(idx)
function getMCartProduct(CartName, idx) {
	return(getItemPart("D", idx));
}

// getMCartQty(idx)
function getMCartQty(CartName, idx) {
	var ni;

	ni = parseInt(getItemPart("Q", idx));
	if (isNaN(ni)) {
		ni = 0;
	}
	return(ni);
}

// getMCartPrice(idx)
function getMCartPrice(CartName, idx) {
	var nf;

	nf = parseFloat(getItemPart("P", idx));
	if (isNaN(nf)) {
		nf = 0;
	}
	return(nf);
}

// addMCartProduct(CartName, IDNum, ProdName, ProdQty, ProdPrice, ProdWt, ProdShp, ProdHdl, ProdTaxable)
function addMCartProduct(CartName, IDNum, ProdName, ProdQty, ProdPrice, ProdWt, ProdShp, ProdHdl, ProdTaxable) {
	var idx;

	// Increment to next item number
	idx = getMCartNumItems(CartName) + 1;
        SetCookie("dasNI-" + CartName, idx, expdateCart, "/");

//	#PxI-x-PxI#		Product # "x" - SKU / ID Number
	dasOrder += "#P" + idx + "I-" + IDNum + "-P" + idx + "I#";
//	#PxD-x-PxD#		Product # "x" - Description
	dasOrder += "#P" + idx + "D-" + ProdName + "-P" + idx + "D#";
//	#PxQ-x-PxQ#		Product # "x" - Quantity
	dasOrder += "#P" + idx + "Q-" + ProdQty + "-P" + idx + "Q#";
//	#PxP-x-PxP#		Product # "x" - Price
	dasOrder += "#P" + idx + "P-" + ProdPrice + "-P" + idx + "P#";
//	#PxW-x-PxW#		Product # "x" - Weight
	dasOrder += "#P" + idx + "W-" + ProdWt + "-P" + idx + "W#";
//	#PxS-x-PxS#		Product # "x" - Shipping Cost
	dasOrder += "#P" + idx + "S-" + ProdShp + "-P" + idx + "S#";
//	#PxH-x-PxH#		Product # "x" - Handling Cost
	dasOrder += "#P" + idx + "H-" + ProdHdl + "-P" + idx + "H#";
//	#PxT-x-PxT#		Product # "x" - Taxable? ('yes' or 'no')
	dasOrder += "#P" + idx + "T-" + ProdTaxable + "-P" + idx + "T#";


	// Set current order
        SetCookie("dasCO-" + CartName, dasOrder, expdateCart, "/");
}

// editCartProduct(idx, IDNum, ProdName, ProdQty, ProdPrice, ProdWt, ProdShp, ProdHdl, ProdTaxable)
function editCartProduct(idx, IDNum, ProdName, ProdQty, ProdPrice, ProdWt, ProdShp, ProdHdl, ProdTaxable) {
	var txtPartA, txtPartB;
	var newOrdA, newOrdB;
	var ndxA, ndxB;
	var tmpName;

	// Set the search strings
	txtPartA = "#P" + idx + "I-";  // Start with Product ID Number
	txtPartB = "-P" + idx + "T#";  // End with Taxable?

	// Find this string
	ndxA = dasOrder.indexOf(txtPartA);
	ndxB = dasOrder.indexOf(txtPartB);
	if ((ndxA >= 0) && (ndxB >= 0)) {
	   // Set new order string
	   ndxB += txtPartB.length;
	   newOrdA = dasOrder.substring(0, ndxA);
	   newOrdB = dasOrder.substring(ndxB, dasOrder.length);
	   dasOrder = newOrdA + newOrdB;

	   // See if order is empty now
	   if (dasOrder.length < 1) {
		// Make SURE order variable is blank
		dasOrder = "";
	   }
	}

// Now, add back on this product at this index
//	#PxI-x-PxI#		Product # "x" - SKU / ID Number
	dasOrder += "#P" + idx + "I-" + IDNum + "-P" + idx + "I#";
//	#PxD-x-PxD#		Product # "x" - Description
	dasOrder += "#P" + idx + "D-" + ProdName + "-P" + idx + "D#";
//	#PxQ-x-PxQ#		Product # "x" - Quantity
	dasOrder += "#P" + idx + "Q-" + ProdQty + "-P" + idx + "Q#";
//	#PxP-x-PxP#		Product # "x" - Price
	dasOrder += "#P" + idx + "P-" + ProdPrice + "-P" + idx + "P#";
//	#PxW-x-PxW#		Product # "x" - Weight
	dasOrder += "#P" + idx + "W-" + ProdWt + "-P" + idx + "W#";
//	#PxS-x-PxS#		Product # "x" - Shipping Cost
	dasOrder += "#P" + idx + "S-" + ProdShp + "-P" + idx + "S#";
//	#PxH-x-PxH#		Product # "x" - Handling Cost
	dasOrder += "#P" + idx + "H-" + ProdHdl + "-P" + idx + "H#";
//	#PxT-x-PxT#		Product # "x" - Taxable? ('yes' or 'no')
	dasOrder += "#P" + idx + "T-" + ProdTaxable + "-P" + idx + "T#";


	// Set current order
        SetCookie("dasCO-" + thisCart, dasOrder, expdateCart, "/");
}


// setMCartQty(idx, qty)
function setMCartQty(CartName, idx, qty) {
        SetCookie("dasP" + idx + "Q-" + CartName, qty, expdateCart, "/");
}


// ====================================================================
// DISPLAY CART INFORMATION ON SCREEN
// ====================================================================
function displayCart() {
	var jdx;
	var nic;

	var tmpcq;
	var tmpcp;
	var tmptot;

	var tmpgtot;
	var tmpship;
	var tmpwt;
	var tmphandling;

	var tmpftot;

	jdx = 1;
	nic = getCartNumItems();

	tmpgtot = 0;
	tmpwt = 0;
	tmpship = 0;
	tmphandling = 0;

	while (jdx <= nic) {
		tmpcq = getCartQty(jdx);

	     // Only display if item has QTY > 0
	     if (tmpcq > 0) {
		tmpcp = getCartPrice(jdx);
		tmptot = tmpcq * tmpcp;
		tmpgtot += tmptot;

		document.write("<TR>");
		document.write("<TD>" + getCartIDNum(jdx) + "</TD>");
		document.write("<TD>" + getCartProduct(jdx) + "</TD>");
		document.write("<TD ALIGN=CENTER>" + tmpcq + "</TD>");
		document.write("<TD ALIGN=RIGHT>" + makeCurrency(tmpcp) + "</TD>");
		document.write("<TD ALIGN=RIGHT>" + makeCurrency(tmptot) + "</TD>");

		document.write("<TD ALIGN=CENTER>");
document.write("<A HREF=\"javascript:void(0);\" onClick=\"editItem(" + jdx + ")\"><IMG SRC=\"" + imgEditCart + "\" BORDER=0></A><BR>");
document.write("<A HREF=\"javascript:void(0);\" onClick=\"removeItem(" + jdx + ")\"><IMG SRC=\"" + imgRemoveCart + "\" ALT=\"Remove Item\" BORDER=0></A>");
		document.write("</TD>");
		document.write("</TR>");
	     }

		jdx++;
	}
	
	// Write out BLANK LINE
	document.write("<TR></TR>");

	// Write out SUB-TOTAL
	document.write("<TR><TD></TD><TD ALIGN=RIGHT>SUB-TOTAL:</TD><TD></TD><TD></TD><TD NAME=\"subtot\" ID=\"subtot\" ALIGN=RIGHT>" + makeCurrency(tmpgtot) + "</TD></TR>");

   if (isCheckout == 1) {
     if (showShipping == 1) {
	// Write out WEIGHT and SHIPPING
	document.write("<TR><TD></TD><TD ALIGN=RIGHT>SHIPPING:</TD><TD></TD><TD></TD><TD NAME=\"shipping\" ID=\"shipping\" ALIGN=RIGHT>" + makeCurrency(tmpship) + "</TD></TR>");
     }
     if (showHandling == 1) {
	// Write out HANDLING
	document.write("<TR><TD></TD><TD ALIGN=RIGHT>HANDLING:</TD><TD></TD><TD></TD><TD NAME=\"handling\" ID=\"handling\" ALIGN=RIGHT>" + makeCurrency(tmphandling) + "</TD></TR>");
     }
     if (showTaxes == 1) {
	// Write out TAXES
	document.write("<TR><TD></TD><TD ALIGN=RIGHT>TAXES:</TD><TD ALIGN=RIGHT>Rate:</TD><TD NAME=\"taxrate\" ID=\"taxrate\" ALIGN=LEFT>0\%</TD><TD NAME=\"taxes\" ID=\"taxes\" ALIGN=RIGHT>" + makeCurrency(0) + "</TD></TR>");
     }
	// Write out FINAL TOTAL
	tmpftot = tmpgtot + tmpship + tmphandling;
	document.write("<TR><TD></TD><TD ALIGN=RIGHT>GRAND TOTAL:</TD><TD></TD><TD></TD><TD NAME=\"gtot\" ID=\"gtot\" ALIGN=RIGHT>" + makeCurrency(tmpftot) + "</TD></TR>");
   }

}


function stringCart() {
	var jdx;
	var nic;

	var tmpcq;
	var tmpcp;
	var tmptot;

	var tmpgtot;
	var tmpship;
	var tmpwt;
	var tmphandling;

	var tmpftot;
	var stCart = "";

	jdx = 1;
	nic = getCartNumItems();

	tmpgtot = 0;
	tmpwt = 0;
	tmpship = 0;
	tmphandling = 0;

	while (jdx <= nic) {
		tmpcq = getCartQty(jdx);

	     // Only display if item has QTY > 0
	     if (tmpcq > 0) {
		tmpcp = getCartPrice(jdx);
		tmptot = tmpcq * tmpcp;
		tmpgtot += tmptot;

		stCart += "<TR>";
		stCart += "<TD>" + getCartIDNum(jdx) + "</TD>";
		stCart += "<TD>" + getCartProduct(jdx) + "</TD>";
		stCart += "<TD ALIGN=CENTER>" + tmpcq + "</TD>";
		stCart += "<TD ALIGN=RIGHT>" + makeCurrency(tmpcp) + "</TD>";
		stCart += "<TD ALIGN=RIGHT>" + makeCurrency(tmptot) + "</TD>";
		stCart += "</TR>";
	     }

		jdx++;
	}
	
	// Write out BLANK LINE
	stCart += "<TR></TR>";

	// Write out SUB-TOTAL
	stCart += "<TR><TD></TD><TD ALIGN=RIGHT>SUB-TOTAL:</TD><TD></TD><TD></TD><TD NAME=\"subtot\" ID=\"subtot\" ALIGN=RIGHT>" + makeCurrency(tmpgtot) + "</TD></TR>";

     if (showShipping == 1) {
	// Write out WEIGHT and SHIPPING
	stCart += "<TR><TD></TD><TD ALIGN=RIGHT>SHIPPING:</TD><TD></TD><TD></TD><TD NAME=\"shipping\" ID=\"shipping\" ALIGN=RIGHT>" + makeCurrency(tmpship) + "</TD></TR>";
     }
     if (showHandling == 1) {
	// Write out HANDLING
	stCart += "<TR><TD></TD><TD ALIGN=RIGHT>HANDLING:</TD><TD></TD><TD></TD><TD NAME=\"handling\" ID=\"handling\" ALIGN=RIGHT>" + makeCurrency(tmphandling) + "</TD></TR>";
     }
     if (showTaxes == 1) {
	// Write out TAXES
	stCart += "<TR><TD></TD><TD ALIGN=RIGHT>TAXES:</TD><TD ALIGN=RIGHT>Rate:</TD><TD NAME=\"taxrate\" ID=\"taxrate\" ALIGN=LEFT>0\%</TD><TD NAME=\"taxes\" ID=\"taxes\" ALIGN=RIGHT>" + makeCurrency(0) + "</TD></TR>";
     }
	// Write out FINAL TOTAL
	tmpftot = tmpgtot + tmpship + tmphandling;
	stCart += "<TR><TD></TD><TD ALIGN=RIGHT>GRAND TOTAL:</TD><TD></TD><TD></TD><TD NAME=\"gtot\" ID=\"gtot\" ALIGN=RIGHT>" + makeCurrency(tmpftot) + "</TD></TR>";

   return (stCart);

}


// ====================================================================
// COMPLETE CART'S ORDER
// ====================================================================
function orderCart() {
	orderMCart(thisCart);
}

function orderMCart(CartName) {
// Temp variables
	var tIndex = 0;
	var tOrdNum;
	var tCartData = "";
	var tInfo = "";

// All the variables for the command
	var tData1 = thisCart;
	var tData2 = "";
	var tData3 = "";

// Error variable
	var tErrors = 0;

	// Create new popup to display error messages in
	var newWin = window.open('about:blank','windowName','width='+widthProcessCart+',height='+heightProcessCart+',menubar=no,location=no,directories=no,status=yes,scrollbars=yes,resizable=yes');
	newWin.document.open();
	newWin.document.write("<HTML><TITLE>Processing Order</TITLE><BODY><CENTER><H2><U>Processing Order</U></H2></CENTER><BR>");

	// Check all info to see if any errors
	// Check Credit Card Number
	if (document.forms[nCreditCardForm].elements[pNumber].value == "") {
		newWin.document.write("* No credit card number<BR>");
		tErrors++;
	}
	// Check Email Address
	if (document.forms[nContactForm].elements[pEMail].value == "") {
		newWin.document.write("* No eMail Address<BR>");
		tErrors++;
	}
	// Check Shipping Name
	if (document.forms[nShipAddrForm].elements[pName].value == "") {
		newWin.document.write("* No shipping name<BR>");
		tErrors++;
	}
	// Check Shipping Address
	if (document.forms[nShipAddrForm].elements[pAddr].value == "") {
		newWin.document.write("* No shipping address<BR>");
		tErrors++;
	}
	// Check Shipping Country
	tIndex = document.forms[nShipAddrForm].elements[pCountry].selectedIndex;
	if (document.forms[nShipAddrForm].elements[pCountry].options[tIndex].value == "United States") {
		// Check Shipping State
		tIndex = document.forms[nShipAddrForm].elements[pState].selectedIndex;
		if (document.forms[nShipAddrForm].elements[pState].options[tIndex].value == "None") {
			newWin.document.write("* No shipping state<BR>");
			tErrors++;
		}

		// Check Shipping Zip Code
		if (document.forms[nShipAddrForm].elements[pZipCode].value == "") {
			newWin.document.write("* No shipping zip code<BR>");
			tErrors++;
		}
	}
	// Check Billing Name
	if (document.forms[nBillingForm].elements[pName].value != "") {
		// Check Billing Address
		if (document.forms[nBillingForm].elements[pAddr].value == "") {
			newWin.document.write("* No billing address<BR>");
			tErrors++;
		}

		// Check Billing Country
		tIndex = document.forms[nBillingForm].elements[pCountry].selectedIndex;
		if (document.forms[nBillingForm].elements[pCountry].options[tIndex].value == "United States") {
			// Check Billing State
			tIndex = document.forms[nBillingForm].elements[pState].selectedIndex;
			if (document.forms[nBillingForm].elements[pState].options[tIndex].value == "None") {
				newWin.document.write("* No billing state<BR>");
				tErrors++;
			}

			// Check Billing Zip Code
			if (document.forms[nBillingForm].elements[pZipCode].value == "") {
				newWin.document.write("* No billing zip code<BR>");
				tErrors++;
			}
		}
	}

	newWin.document.write("<B><I>Finished processing</B></I><BR>Found " + tErrors + " errors...<BR><BR>");

	// If no errors, save order to server
	if (tErrors == 0) {
		// Make an order number to use
		tOrdNum = CreateOrderNum();
		newWin.document.write("Order # " + tOrdNum + "<BR>");
		tData2 = tOrdNum;

		// Add list of items ordered - include shipping, handling, etc.
tCartData = "<TABLE WIDTH='100%' ALIGN='CENTER' BORDER='3'> \
	<TR> \
		<TD WIDTH='20%' ALIGN='CENTER'><B><U><I>SKU / ID #</I></U></B></TD> \
		<TD WIDTH='30%' ALIGN='CENTER'><B><U><I>Product Description</I></U></B></TD> \
		<TD WIDTH='10%' ALIGN='CENTER'><B><U><I>Quantity</I></U></B></TD> \
		<TD WIDTH='20%' ALIGN='CENTER'><B><U><I>Price</I></U></B></TD> \
		<TD WIDTH='20%' ALIGN='CENTER'><B><U><I>Total</I></U></B></TD> \
	</TR>";
		tCartData += stringCart();
		tCartData += "</TABLE>";

		// Add Shipping Information
		tInfo = "<HR width='100%'>";
tInfo += "<CENTER> \
<H4><B><U>Shipping Method</U></B></H4> \
</CENTER> \
<BR> \
<TABLE WIDTH='100%'> \
  <TR> \
    <TD WIDTH='10%'></TD> \
    <TD WIDTH='30%'></TD> \
    <TD WIDTH='50%'></TD> \
    <TD WIDTH='10%'></TD> \
  </TR>";

		tIndex = document.forms[nShipMethodForm].elements[pCarrier].selectedIndex;
		tInfo += "<TR><TD></TD><TD><B>Carrier</B></TD><TD>" + document.forms[nShipMethodForm].elements[pCarrier].options[tIndex].value + "</TD></TR>";
		if (document.forms[nShipMethodForm].elements[pNotes].value != "") {
		  tInfo += "<TR><TD></TD><TD><B>Notes</B></TD><TD>" + document.forms[nShipMethodForm].elements[pNotes].value + "</TD></TR>";
		}

tInfo += "</TABLE>";

		// Add CreditCard Information
		tInfo += "<HR width='100%'>";
tInfo += "<CENTER> \
<H4><B><U>CreditCart Information</U></B></H4> \
</CENTER> \
<BR> \
<TABLE WIDTH='100%'> \
  <TR> \
    <TD WIDTH='10%'></TD> \
    <TD WIDTH='30%'></TD> \
    <TD WIDTH='50%'></TD> \
    <TD WIDTH='10%'></TD> \
  </TR>";

		tIndex = document.forms[nCreditCardForm].elements[pType].selectedIndex;
		tInfo += "<TR><TD></TD><TD><B>Type</B></TD><TD>" + document.forms[nCreditCardForm].elements[pType].options[tIndex].value + "</TD></TR>";
		tInfo += "<TR><TD></TD><TD><B>Number</B></TD><TD>" + document.forms[nCreditCardForm].elements[pNumber].value + "</TD></TR>";
		tIndex = document.forms[nCreditCardForm].elements[pExpMonth].selectedIndex;
		tInfo += "<TR><TD></TD><TD><B>Exp Date</B></TD><TD>" + document.forms[nCreditCardForm].elements[pExpMonth].options[tIndex].value;
		tIndex = document.forms[nCreditCardForm].elements[pExpYear].selectedIndex;
		tInfo += " " + document.forms[nCreditCardForm].elements[pExpYear].options[tIndex].value + "</TD></TR>";

tInfo += "</TABLE>";

		// Add Contact Information
		tInfo += "<HR width='100%'>";
tInfo += "<CENTER> \
<H4><B><U>Contact Information</U></B></H4> \
</CENTER> \
<BR> \
<TABLE WIDTH='100%'> \
  <TR> \
    <TD WIDTH='10%'></TD> \
    <TD WIDTH='30%'></TD> \
    <TD WIDTH='50%'></TD> \
    <TD WIDTH='10%'></TD> \
  </TR>";
		tData3 += document.forms[nContactForm].elements[pEMail].value;
		tInfo += "<TR><TD></TD><TD><B>eMail</B></TD><TD>" + document.forms[nContactForm].elements[pEMail].value + "</TD></TR>";
		if (document.forms[nContactForm].elements[pHomePhone].value != "") {
		  tInfo += "<TR><TD></TD><TD><B>Home Phone</B></TD><TD>" + document.forms[nContactForm].elements[pHomePhone].value + "</TD></TR>";
		}
		if (document.forms[nContactForm].elements[pWorkPhone].value != "") {
		  tInfo += "<TR><TD></TD><TD><B>Work Phone</B></TD><TD>" + document.forms[nContactForm].elements[pWorkPhone].value + "</TD></TR>";
		}
		tIndex = document.forms[nContactForm].elements[pBestTime].selectedIndex;
		tInfo += "<TR><TD></TD><TD><B>Best Time to Contact</B></TD><TD>" + document.forms[nContactForm].elements[pBestTime].options[tIndex].value + "</TD></TR>";
		tIndex = document.forms[nContactForm].elements[pBestPlace].selectedIndex;
		tInfo += "<TR><TD></TD><TD><B>Best Place to Contact</B></TD><TD>" + document.forms[nContactForm].elements[pBestPlace].options[tIndex].value + "</TD></TR>";

tInfo += "</TABLE>";

		// Add Shipping Address
		tInfo += "<HR width='100%'>";
tInfo += "<CENTER> \
<H4><B><U>Shipping Address</U></B></H4> \
</CENTER> \
<BR> \
<TABLE WIDTH='100%'> \
  <TR> \
    <TD WIDTH='10%'></TD> \
    <TD WIDTH='30%'></TD> \
    <TD WIDTH='50%'></TD> \
    <TD WIDTH='10%'></TD> \
  </TR>";

		tInfo += "<TR><TD></TD><TD><B>Name</B></TD><TD>" + document.forms[nShipAddrForm].elements[pName].value + "</TD></TR>";
		tInfo += "<TR><TD></TD><TD><B>Addr</B></TD><TD>" + document.forms[nShipAddrForm].elements[pAddr].value + "</TD></TR>";
		if (document.forms[nShipAddrForm].elements[pAddrTwo].value != "") {
		  tInfo += "<TR><TD></TD><TD><B>----</B></TD><TD>" + document.forms[nShipAddrForm].elements[pAddrTwo].value + "</TD></TR>";
		}
		if (document.forms[nShipAddrForm].elements[pCity].value != "") {
		  tInfo += "<TR><TD></TD><TD><B>City</B></TD><TD>" + document.forms[nShipAddrForm].elements[pCity].value + "</TD></TR>";
		}
		tIndex = document.forms[nShipAddrForm].elements[pState].selectedIndex;
		if (document.forms[nShipAddrForm].elements[pState].options[tIndex].value != "None") {
			tInfo += "<TR><TD></TD><TD><B>State / Province</B></TD><TD>" + document.forms[nShipAddrForm].elements[pState].options[tIndex].value + "</TD></TR>";
		}
		tIndex = document.forms[nShipAddrForm].elements[pCountry].selectedIndex;
		tInfo += "<TR><TD></TD><TD><B>Country</B></TD><TD>" + document.forms[nShipAddrForm].elements[pCountry].options[tIndex].value + "</TD></TR>";
		if (document.forms[nShipAddrForm].elements[pZipCode].value != "") {
		  tInfo += "<TR><TD></TD><TD><B>Zip / Postal Code</B></TD><TD>" + document.forms[nShipAddrForm].elements[pZipCode].value + "</TD></TR>";
		}

tInfo += "</TABLE>";

		// Add Billing Address
		tInfo += "<HR width='100%'>";
tInfo += "<CENTER> \
<H4><B><U>Billing Address</U></B></H4> \
</CENTER> \
<BR> \
<TABLE WIDTH='100%'> \
  <TR> \
    <TD WIDTH='10%'></TD> \
    <TD WIDTH='30%'></TD> \
    <TD WIDTH='50%'></TD> \
    <TD WIDTH='10%'></TD> \
  </TR>";

	if (document.forms[nBillingForm].elements[pName].value != "") {
		tInfo += "<TR><TD></TD><TD><B>Name</B></TD><TD>" + document.forms[nBillingForm].elements[pName].value + "</TD></TR>";
		tInfo += "<TR><TD></TD><TD><B>Addr</B></TD><TD>" + document.forms[nBillingForm].elements[pAddr].value + "</TD></TR>";
		if (document.forms[nBillingForm].elements[pAddrTwo].value != "") {
		  tInfo += "<TR><TD></TD><TD><B>----</B></TD><TD>" + document.forms[nBillingForm].elements[pAddrTwo].value + "</TD></TR>";
		}
		if (document.forms[nBillingForm].elements[pCity].value != "") {
		  tInfo += "<TR><TD></TD><TD><B>City</B></TD><TD>" + document.forms[nBillingForm].elements[pCity].value + "</TD></TR>";
		}
		tIndex = document.forms[nBillingForm].elements[pState].selectedIndex;
		if (document.forms[nBillingForm].elements[pState].options[tIndex].value != "None") {
			tInfo += "<TR><TD></TD><TD><B>State</B></TD><TD>" + document.forms[nBillingForm].elements[pState].options[tIndex].value + "</TD></TR>";
		}
		tIndex = document.forms[nBillingForm].elements[pCountry].selectedIndex;
		tInfo += "<TR><TD></TD><TD><B>Country</B></TD><TD>" + document.forms[nBillingForm].elements[pCountry].options[tIndex].value + "</TD></TR>";
		if (document.forms[nBillingForm].elements[pZipCode].value != "") {
		  tInfo += "<TR><TD></TD><TD><B>Zip Code</B></TD><TD>" + document.forms[nBillingForm].elements[pZipCode].value + "</TD></TR>";
		}
	} else {
		tInfo += "<TR><TD></TD><TD></TD><TD><B><I>SAME AS SHIPPING ADDRESS</I></B></TD></TR>";
	}

tInfo += "</TABLE>";

		// Write all information to order
		newWin.document.write("Sending order ... Please wait<BR>");
                newWin.document.write("<B><I>Done.</I></B><BR><BR>");

                // Finish off this temporary window
                newWin.document.write("</BODY></HTML>");
                newWin.document.close();
                newWin.close();

		// Write all information to order
		document.forms[5].action = locWriteOrder;
		document.forms[5].data1.value = tData1;
		document.forms[5].data2.value = tData2;
		document.forms[5].data3.value = tData3;
		document.forms[5].data4.value = tCartData + tInfo;

                return true;
        } else {
                // We have an error, finish off list
                newWin.document.write("<B><I>Done.</I></B><BR><BR>");

                // Finish off this temporary window
                newWin.document.write("</BODY></HTML>");
                newWin.document.close();

                return false;
        }

}

function resetCart() {
        resetMCart(thisCart);
}

function resetMCart(CartName) {
        // Reset Cart
        SetCookie("dasNI-" + CartName, "0", expdateCart, "/");

        // Initialize the order
        SetCookie("dasCO-" + CartName, "", expdateCart, "/");
}

function CreateOrderNum() {
	var newOrdNum = "";
	var curYear;

	adjustDate();

	var nowInMS = (new Date().getTime()) - (2 * DATEADJUSTMENT);
	var nowDateObject = new Date(nowInMS);

	curYear = nowDateObject.getYear();
	if (curYear < 1900) {
		curYear += 1900;
	}
	newOrdNum = "" + curYear + nowDateObject.getMonth() + nowDateObject.getDate() + nowDateObject.getHours() + nowDateObject.getMinutes() + nowDateObject.getSeconds() + "-" + Math.round(Math.random() * 100000);
	return (newOrdNum);
}

function adjustDate() {
   var base = new Date();
   var testDate = base;

   testDate = testDate.toLocaleString();
   testDate = new Date(testDate);

   DATEADJUSTMENT = testDate.getTime() - base.getTime();
}

