	////////////////////
	// useful global vars
	var isValid; // boold
	
	////////////////////
	// user selection vars 

	var qty; // int
	var pages; // int

	var isOneSide; // bool
	var isTwoSides; // bool

	var isFolded; // bool

	var isFaxEmailProof; // bool
	var isStandardProof; // bool

	////////////////////
	// price vars

	var coverPrice = 0;
	var insidePrice = 0;
	var binderyPrice = 0;
	var subtotalPrice = 0;
	var costEach = 0;
	var proofPrice = 0;
	var shippingPrice = 0;
	var totalPrice = 0;


	////////////////////
	// price data

	// -- quantity-based items --

	// quantity
	var qtyArray = new Array(4);
	qtyArray[0] = 1000;
	qtyArray[1] = 2500;
	qtyArray[2] = 5000;
	qtyArray[3] = 10000;
	
	// printing one side - 4 pages
	var oneSideArray4Pages = new Array(4);
	oneSideArray4Pages[0] = 726;
	oneSideArray4Pages[1] = 892;
	oneSideArray4Pages[2] = 1104;
	oneSideArray4Pages[3] = 1438;

	// printing two sides - 4 pages
	var twoSidesArray4Pages = new Array(4);
	twoSidesArray4Pages[0] = 726;
	twoSidesArray4Pages[1] = 892;
	twoSidesArray4Pages[2] = 1104;
	twoSidesArray4Pages[3] = 1438;

	// shipping - 4 pages
	var shippingArray4Pages = new Array(4);
	shippingArray4Pages[0] = 35;
	shippingArray4Pages[1] = 68;
	shippingArray4Pages[2] = 0;
	shippingArray4Pages[3] = 0;

	// printing one side - 8 pages
	var oneSideArray8Pages = new Array(4);
	oneSideArray8Pages[0] = 1198;
	oneSideArray8Pages[1] = 1425;
	oneSideArray8Pages[2] = 1875;
	oneSideArray8Pages[3] = 2848;

	// printing two sides - 8 pages
	var twoSidesArray8Pages = new Array(4);
	twoSidesArray8Pages[0] = 1198;
	twoSidesArray8Pages[1] = 1425;
	twoSidesArray8Pages[2] = 1875;
	twoSidesArray8Pages[3] = 2848;

	// shipping - 8 pages
	var shippingArray8Pages = new Array(4);
	shippingArray8Pages[0] = 68;
	shippingArray8Pages[1] = 145;
	shippingArray8Pages[2] = 0;
	shippingArray8Pages[3] = 0;

	// printing one side - 12 pages
	var oneSideArray12Pages = new Array(4);
	oneSideArray12Pages[0] = 1665;
	oneSideArray12Pages[1] = 1946;
	oneSideArray12Pages[2] = 2699;
	oneSideArray12Pages[3] = 3989;

	// printing two sides - 12 pages
	var twoSidesArray12Pages = new Array(4);
	twoSidesArray12Pages[0] = 1665;
	twoSidesArray12Pages[1] = 1946;
	twoSidesArray12Pages[2] = 2699;
	twoSidesArray12Pages[3] = 3989;

	// shipping - 12 pages
	var shippingArray12Pages = new Array(4);
	shippingArray12Pages[0] = 111;
	shippingArray12Pages[1] = 224;
	shippingArray12Pages[2] = 0;
	shippingArray12Pages[3] = 0;

	// folding
	var foldingArray = new Array(4);
	foldingArray[0] = 10;
	foldingArray[1] = 25;
	foldingArray[2] = 45;
	foldingArray[3] = 75;


	// -- flat rate items --

	var faxEmailProofRate4Pages = 30;
	var standardProofRate4Pages = 75;

	var faxEmailProofRate8Pages = 45;
	var standardProofRate8Pages = 90;

	var faxEmailProofRate12Pages = 45;
	var standardProofRate12Pages = 90;

	/////////////////////////////////////
	// update prices
	function updatePrices()
	{
		// check selections
		checkSelections();

		if (!isValid)
		{
			showCall();
			return;
		}
		
		// calculate prices
		calcPrices();

		// display prices
		showPrices();
	}
	/////////////////////////////////////

	function checkSelections()
	{
		// quantity (always done first)
		var selQty = document.getElementById("selQty");
		qty = selQty.options[selQty.selectedIndex].value;

		if (qty =="10000+")
		{
			isValid = false;
			return;
		}

		var pages1 = document.getElementById("pages_1");
		var pages2 = document.getElementById("pages_2");
		var pages3 = document.getElementById("pages_3");

		if (pages1.checked) {
			pages = 4;
		}

		if (pages2.checked) {
			pages = 8;
		}

		if (pages3.checked) {
			pages = 12;
		}

		// printing on both sides?
		var back_4_color = document.getElementById("back_4_color_1");

		isOneSide = !back_4_color.checked;
		isTwoSides = back_4_color.checked;



		var bindery = document.getElementById("bindery_1");
		isFolded = !bindery.checked;

		// proofs
		var proof = document.getElementById("proof_1");

		isFaxEmailProof = proof.checked;
		isStandardProof = !proof.checked;
		
		isValid = true;

	}

	function calcPrices()
	{
		var priceIndex = getIndexOfQty( qty );

		// cover price
		if (isOneSide)
			coverPrice = eval("oneSideArray" + pages + "Pages[priceIndex]");
		
		if (isTwoSides)
			coverPrice = eval("twoSidesArray" + pages + "Pages[priceIndex]");


		insidePrice = 0;

		
		if (isFolded == true)
		{
			binderyPrice = foldingArray[priceIndex];
		}
		else
		{
			binderyPrice = 0;
		}
		
		if (isFaxEmailProof)
			proofPrice = eval("faxEmailProofRate" + pages + "Pages");

		if (isStandardProof)
			proofPrice = eval("standardProofRate" + pages + "Pages");

		shippingPrice = eval("shippingArray" + pages + "Pages[priceIndex]");

		// universal calcs
		subtotalPrice = coverPrice + insidePrice + binderyPrice;
		costEach = subtotalPrice / qty;
		totalPrice = subtotalPrice + proofPrice + shippingPrice;
	}

	function showPrices()
	{
		var txtBoxCoverPrice = document.getElementById("txtBoxCoverPrice");
		txtBoxCoverPrice.value = numberToFixed(coverPrice, 2);

		var txtBoxInsidePrice = document.getElementById("txtBoxInsidePrice");
		txtBoxInsidePrice.value = numberToFixed(insidePrice, 2);

		var txtBoxBinderyPrice = document.getElementById("txtBoxBinderyPrice");
		txtBoxBinderyPrice.value = numberToFixed(binderyPrice, 2);

		var txtBoxSubtotalPrice = document.getElementById("txtBoxSubtotalPrice");
		txtBoxSubtotalPrice.value = numberToFixed(subtotalPrice, 2);

		var txtBoxCostEach = document.getElementById("txtBoxCostEach");
		txtBoxCostEach.value = numberToFixed(costEach, 2);

		var txtBoxProofPrice = document.getElementById("txtBoxProofPrice");
		txtBoxProofPrice.value = numberToFixed(proofPrice, 2);

		var txtBoxShippingPrice = document.getElementById("txtBoxShippingPrice");
		txtBoxShippingPrice.value = numberToFixed(shippingPrice, 2);

		var txtBoxTotalPrice = document.getElementById("txtBoxTotalPrice");
		txtBoxTotalPrice.value = numberToFixed(totalPrice, 2);

		var callRow = document.getElementById("callRow");
		callRow.style.display = "none";

	}

	function showCall()
	{
		var txtBoxCoverPrice = document.getElementById("txtBoxCoverPrice");
		txtBoxCoverPrice.value = "";

		var txtBoxInsidePrice = document.getElementById("txtBoxInsidePrice");
		txtBoxInsidePrice.value = "";

		var txtBoxBinderyPrice = document.getElementById("txtBoxBinderyPrice");
		txtBoxBinderyPrice.value = "";

		var txtBoxSubtotalPrice = document.getElementById("txtBoxSubtotalPrice");
		txtBoxSubtotalPrice.value = "";

		var txtBoxCostEach = document.getElementById("txtBoxCostEach");
		txtBoxCostEach.value = "";

		var txtBoxProofPrice = document.getElementById("txtBoxProofPrice");
		txtBoxProofPrice.value = "";

		var txtBoxShippingPrice = document.getElementById("txtBoxShippingPrice");
		txtBoxShippingPrice.value = "";

		var txtBoxTotalPrice = document.getElementById("txtBoxTotalPrice");
		txtBoxTotalPrice.value = "";

		var callRow = document.getElementById("callRow");
		callRow.style.display = "";


	}
	
	// util functions

	function getIndexOfQty( iQty )
	{
		for (var i = 0 ; i < qtyArray.length; i++ )
		{
			if (qtyArray[i] == iQty)
				return i;
		}

	}

	function numberToFixed( n , decimals )
	{
			if (n.toFixed)
			{
				return n.toFixed(decimals);
			} else {
				var factor = Math.pow(10, decimals);
				return Math.round(n * factor) / factor;
			}

	}

	function submitOrder()
	{
		document.forms[0].submit();
	}