function CalcPrice()
{
	
	var f = document.forms[1];
	var f0 = document.forms[0];
	var c;
	var paperweightfactor = 1;
	var coverpaperweightfactor = 1;
	var paperUG;
	var nPages;
	var nQty;
	
	// everytime you do a new calc, something has changed on the form so must disable 'submit' button on form
		
	// dsable the submit button
	if (document.getElementById('Submit')) {
		f0.Submit.disabled = true;
	}
	
	if(typeof f.NumberOfPages != "undefined")
		nPages = f.NumberOfPages.value
	else
		nPages = 1;
	

	//alert('document.getElementById : ' + document.getElementById('NumberOfPages'));
	if (document.getElementById('NumberOfPages')) {
		//Set Base Quantity and Price
		nPages = f.elements['NumberOfPages'].value;
		nQty = f.elements["Quantity"].value;
		f.elements["Base Price"].value = BasePrices[nQty][0] + (BasePrices[nQty][1] * nPages) ;
		f.elements["Base Price"].value = floatToStr(f.elements["Base Price"].value,0);
		f.BaseQty.value = BaseQty[nQty];
		
	}
	else {
		//Set Base Quantity and Price
		nQty = f.elements["Quantity"].value;
		f.elements["Base Price"].value = BasePrices[nQty];
		f.elements["Base Price"].value = floatToStr(f.elements["Base Price"].value,0);
		f.BaseQty.value = BaseQty[nQty];
		
	};
	
	//Colour Adjustment or Blank Second Sheets
	var colourAdj=0;
	
	if(typeof f.BackCover != "undefined")
		for(c=0;c<f.BackCover.length;c++)
		{
			// reset nPages 
				
			if (f.BackCover[c].checked)
			{
				if (typeof NumberPages != "undefined") {
					nPages = NumberPages[nPages]}
				else{
					// array doesnt exist a
				};
				
				var nBackPages = nPages;
				if (nPages == 1)
					nBackPages = 2;
			    colourAdj += BackFactors[c] * f.elements["Base Price"].value * 2 / nBackPages;
				break;
			}
		}
	//alert('colourAdj just messed with = ' + colourAdj);

	if(typeof f.InsidePages != "undefined")
		if (f.InsidePages[1].checked)   //BW
		{
			for(c=0;c<BWInside.length;c++)
				if (BWInside[c][0] == nPages)
				{
					colourAdj += BWInside[c][1] * f.elements["Base Price"].value;
					break;
				}
		}
	
	var BlankSecondSheetQty = 0;
	//Blank Second Sheets
	if(typeof f.BlankSecondSheetQty != "undefined")
	{
		BlankSecondSheetQty = floatVal(f.elements["BlankSecondSheetQty"].value);
		colourAdj += floatVal(f.elements["BlankSecondSheetCost"].value) * BlankSecondSheetQty;
	}
	f.SecondSide.value = floatToStr(colourAdj,0);
	
	//Paper
	paperUG=0;
	if(typeof f.Paper != "undefined")
		for(c=0;c<f.Paper.length;c++)
		{		
			if (f.Paper[c].checked)
			{
			    paperUG += PaperFactors[c] * f.elements["Base Price"].value;
				paperweightfactor = PaperWeightFactors[c];
				break;
			}
		}
		
	if(typeof f.CoverPaper != "undefined")
		for(c=0;c<f.CoverPaper.length;c++)
		{		
			if (f.CoverPaper[c].checked)
			{
			    paperUG += PaperFactors[c] * f.elements["Base Price"].value * 4 / nPages;
				break;
			}
		}
	
	f.PaperUpgrade.value = floatToStr(paperUG,0);
	//Varnish
	if(typeof f.Varnish != "undefined")
		for(c=0;c<f.Varnish.length;c++)
		{		
			if (f.Varnish[c].checked)
			{
			    f.VarnishCost.value = floatToStr(VarnishFactors[c] * f.elements["Base Price"].value,0);
				break;
			}
		}

	//Folding
	if(typeof f.Folding != "undefined")
		for(c=0;c<f.Folding.length;c++)
		{		
			if (f.Folding[c].checked)
			{
			    f.FoldingCost.value = floatToStr(FoldingFactors[c] * f.elements["Base Price"].value,0);
				break;
			}
		}


	//Sub total
	f.elements["SubTotal"].value = floatToStr(floatVal(f.elements["Base Price"].value) +	
								   floatVal(f.elements["SecondSide"].value) +
								   floatVal(f.elements["PaperUpgrade"].value) +
								   floatVal(f.elements["VarnishCost"].value) +
								   floatVal(f.elements["FoldingCost"].value),0);
    //Cost each
    if(floatVal(f.BaseQty.value) == 0)
    	f.elements["CostPerUnit"].value = "0";
    else
        f.elements["CostPerUnit"].value = floatToStr(floatVal(f.elements["SubTotal"].value) / floatVal(f.BaseQty.value),3);
    
    //Proof   
	if(typeof f.Proof != "undefined")
		for(c=0;c<f.Proof.length;c++)
		{		
			if (f.Proof[c].checked)
			{
			    f.HardCopyProof.value = floatToStr(ProofFactors[c],0);
				break;
			}
		}
	
	f.UrgencyCharge.value = floatToStr(SpeedFactors[f.ProductionSpeed.value] * f.elements["Base Price"].value, 0);
	
	//HandlingShipping
	var zone = CalcPOLZone(f.DeliveryPostcode.value);
	if ( (zone > 0) && (zone <= ShippingZones.length) )
	{
		var shipcost = 0;
		var weight = paperweightfactor * f.BaseQty.value * PaperWeight * f.RelativeA4Size.value * nPages;
		var onite = ShippingZones[zone-1][1];
		var kg25 = ShippingZones[zone-1][2];
		var kg45 = ShippingZones[zone-1][3];
		var kg50 = ShippingZones[zone-1][4];
		var kg50plus = ShippingZones[zone-1][5];
		
		if (weight <= 2.5)
			shipcost = kg25;
		else if (weight <= 4.5)
			shipcost = kg45;
		else
		    shipcost = kg50 + (kg50plus * weight);
		
		if (f.DeliveryMethod.value == 1) {
			shipcost *= onite;
			}
		f.HandlingShipping.value = floatToStr(shipcost,0);
	}
	else 
		f.HandlingShipping.value = "";
       
    //Order Total
    f.elements["OrderTotal"].value = floatToStr(floatVal(f.elements["SubTotal"].value) +
								     floatVal(f.elements["HardCopyProof"].value) +
								     floatVal(f.elements["UrgencyCharge"].value) +
								     floatVal(f.elements["HandlingShipping"].value),0);
}

function SetFolding(fopt)
{
	document.foldimg.src=FoldingImages[fopt-1];
	CalcPrice();
}

function SetBack(fopt)
{
	document.backimg.src=BackImages[fopt-1];
	CalcPrice();
}

function SetInside(fopt)
{
	document.insideimg.src=InsideImages[fopt-1];
	
	CalcPrice();
}

function SetPaper(fopt)
{
	CalcPrice();
}

function SetCoverPaper(fopt)
{
	CalcPrice();
}

function SetVarnish(fopt)
{
	CalcPrice();
}

function SetSpeed(fopt)
{
	
	// set the div text
	if (fopt == 0) {
		despatchDay.innerHTML = '<strong>(Despatched on 5th trading day)</strong>';
	}
	else if (fopt == 1) {
		despatchDay.innerHTML = '<strong>(Despatched on 4th trading day)</strong>';
	}
	else if (fopt == 2) {
		despatchDay.innerHTML = '<strong>(Despatched on 3rd trading day)</strong>';
	}
	else if (fopt == 3) {
		despatchDay.innerHTML = '<strong>(Despatched on 2nd trading day)</strong>';
	}
		
	CalcPrice();
}

function SetProof(fopt)
{
	CalcPrice();
}

function SetDelivery(fopt)
{
	ExitPostcode();
}

function InitCalc ()
{
	//var f = document.forms[0];
	//var n;
	//for(var c=0;c<f.Quantity.length;c++)
	//{
	//	n = "qty" + f.Quantity[c].value;
	//	f.elements[n].value = floatToStr(floatVal(BasePrices[c]),2);
    //}
}

function InitMultiCalc()
{
	CalcPrice();
	
	var f = document.forms[0];
	var n;
	var p = f.NumberOfPages.value;
	//for(var c=0;c<f.Quantity.length;c++)
	//{
		//n = "qty" + f.Quantity[c].value;
		//if (p>0)
		//	f.elements[n].value = floatToStr(floatVal(BasePrices[c][0])+((p-8)*BasePrices[c][1]/4),2);
    //	else
    //		f.elements[n].value = "0";
   // }
	
}

function ExitPostcode()
{	
	CalcPrice();
}

function ExitBlankSecondSheet()
{
	CalcPrice();
}

function CalcPOLZone(pcode)
{
	if(!isFinite(parseInt(pcode)))
		return 0;
	
	for(var c=0;c<POLZones.length;c++)
	{	
	    if ( (POLZones[c][1] <= pcode) && (pcode <= POLZones[c][2]))
		{
			return POLZones[c][0];
		}
	}
	return 0;
}

