// GLOBAL VARIABLES ********************************************************************************************************
var br=brPlatform="";
if(navigator.appVersion.indexOf("Win")!=-1) var brPlatform="windows";
else var brPlatform="Other";
if(document.getElementById) {
	docLay="document.getElementById";
	if(navigator.appName=="Microsoft Internet Explorer") {
		br="IE";
		var txtLeftPos=".pixelLeft"; }
	else {
		br="NS6";
		var txtLeftPos=".left"; }
	var txtBrack1="(";
	var txtBrack2=")";
	var txtStyle=".style";
	var txtShow="visible";
	var txtHide="hidden";
	var txtLeft=".offsetLeft";
	var txtWidth=".offsetWidth"; }
else if(document.all) {
	br="IE";
	docLay="document.all";
	var txtBrack1="[";
	var txtBrack2="]";
	var txtStyle=".style";
	var txtShow="visible";
	var txtHide="hidden";
	var txtLeftPos=".pixelLeft";
	var txtLeft=".offsetLeft";
	var txtWidth=".offsetWidth"; }
else if(document.layers) {
	br="NS";
	docLay="document.layers";
	var txtBrack1="[";
	var txtBrack2="]";
	var txtStyle="";
	var txtShow="show";
	var txtHide="hide";
	var txtLeftPos=".left";
	var txtLeft=".offsetLeft";
	var txtWidth=".offsetWidth"; }
// GET TRUE VERSION NUMBER
var brVer=0;
arrDetails=new Array();
arrDetails=navigator.appVersion.split(" ");
for(var i=0;i<arrDetails.length;i++) {
	if(!isNaN(parseInt(arrDetails[i]))) {
		if(parseInt(arrDetails[i])<10 && parseInt(arrDetails[i])>brVer) brVer=parseFloat(arrDetails[i]); } }

// BANNER FUNCTIONS ********************************************************************************************************
var banner=new Array(), bannerlink=new Array(), bannertarget=new Array();
var bannerSpeed=100, n=0;
if(br!="") {
	banner[0]=new Image();
	banner[0].src="/img/call.gif";
	bannerlink[0]="/contact_us/";
	bannertarget[0]="NOP";
	banner[1]=new Image();
	banner[1].src="/img/call.gif";
	bannerlink[1]="/contact_us/";
	bannertarget[1]="NOP";
	banner[2]=new Image();
	banner[2].src="/img/call.gif";
	bannerlink[2]="/contact_us/";
	bannertarget[2]="NOP";
// THIS BANNER IS USED IN THE "NOSCRIPT" TAGS
	banner[3]=new Image();
	banner[3].src="/img/call.gif";
	bannerlink[3]="/contact_us/";
	bannertarget[3]="NOP";
	banner[4]=new Image();
	banner[4].src="/img/call.gif";
	bannerlink[4]="/contact_us/";
	bannertarget[4]="NOP";
	banner[5]=new Image();
	banner[5].src="/img/call.gif";
	bannerlink[5]="/contact_us/";
	bannertarget[5]="NOP";
}
var intMaxBanners=banner.length;
function rotate() {
	n=(Math.floor(Math.random()*intMaxBanners));
	document.imgRoll.src=banner[n].src; 
	setTimeout("rotate()", bannerSpeed);
}
function clickthru() {
	if(bannertarget[n]!="NOP") winNew(bannertarget[n], bannerlink[n], 510, 800, "yes", "yes", "1", "no", "yes", "yes");
	else document.location=bannerlink[n];
}

// BIGOIL FUNCTIONS ********************************************************************************************************
// THIS FUNCTION DOES NOT VALIDATE THE DATE!
function updDateData(intRow, txtDate) {
  // SPLIT THE DATE INTO day, month, year
	var arrDate=txtDate.split("/", 3);
	if(arrDate[2]<100) arrDate[2]="20"+arrDate[2].toString();
	arrDate[1]--;
	var dateEntered=new Date(arrDate[2], arrDate[1], arrDate[0]);
  // UPDATE TITLE WITH NEW DATE
	copyChange("dynDate", getMonthName(dateEntered.getMonth())+" "+dateEntered.getFullYear());
  // UPDATE "IFRAME" WITH NEW DATE DETAILS
	top.frames["getData"+intRow].location.href="margin_analysis.php?dte="+escape(txtDate)+"&row="+intRow;
}
function updateBlock(frmObj, intRow) {
  // RUN JAVASCRIPT FUNCTION TO CALCULATE FINAL SET OF TOTALS FOR ALL ROWS
	var intMinTankNumber, intMaxTankNumber;
  // GET THE MINIMUM AND MAXIMUM TANK NUMBERS FOR THE LOOP BELOW
	eval("intMinTankNumber=frmObj.frmMinTank"+intRow+".value;");
	eval("intMaxTankNumber=frmObj.frmMaxTank"+intRow+".value;");
	for(var i=intMinTankNumber;i<=intMaxTankNumber;i++) {
	  // CHECK TO MAKE SURE THE ROW EXISTS BEFORE TRYING TO UPDATE IT
		if(frmObj["frmProduct1["+i+"]"]) updateVolMargin(frmObj, "", intRow, i, true); }
}
function updateExchRate(frmObj, intRow, blnCheckVal) {
	var i=1;
	if(blnCheckVal) {
		if(isNaN(parseFloat(frmObj["frmPlattsExcRate"+intRow].value))) frmObj["frmPlattsExcRate"+intRow].value=frmObj["origPlattsExcRate"+intRow].value;
		frmObj["frmPlattsExcRate"+intRow].value=parseFloat(frmObj["frmPlattsExcRate"+intRow].value).toFixed(4);
	  // UPDATE "IFRAME" WITH NEW DATE DETAILS
		if(blnCheckVal) top.frames["getData"+intRow].location.href="margin_analysis.php?all=1&dte="+escape(frmObj["frmDate"+intRow].value)+"&row="+intRow+"&exch="+parseFloat(frmObj["frmPlattsExcRate"+intRow].value); }
}
// "disableDeliverySubmit" IS USED TO STOP DUPLICATION (INCASE THE "Save" BUTTON IS CONTINUOUSLY PRESSED)
var validateDeliveryConfirm=validateDeliveryRun=disableDeliverySubmit=false;
function validateDelivery(frmObj) {
	if(disableDeliverySubmit) return false;
	var arrNewRetailPrices=new Array();
	var arrNewExchRates=new Array();
	if(!validateDeliveryRun) {
		var intRow=1, i=1;
		var intMaxTankID;
		outerWhile:
		i=frmObj["frmMinTank"+intRow].value;
		while(frmObj["frmRetailPriceInc"+intRow+"["+i+"]"]) {
		  // CHECK EXCHANGE RATE
			if(frmObj["frmPlattsExcRate"+intRow]) {
				if(frmObj["frmPlattsExcRate"+intRow].value!=frmObj["origPlattsExcRate"+intRow].value) arrNewExchRates[arrNewExchRates.length]=intRow; }
		  // NOW CONTINUE WITH RETAIL PRICES
			i=frmObj["frmMinTank"+intRow].value;
			intMaxTankID=frmObj["frmMaxTank"+intRow].value;
			innerWhile:
			while(i<=intMaxTankID) {
				if(frmObj["frmRetailPriceInc"+intRow+"["+i+"]"]) {
					if(frmObj["frmRetailPriceInc"+intRow+"["+i+"]"].value!=frmObj["origRetailPriceInc"+intRow+"["+i+"]"].value) {
						arrNewRetailPrices[arrNewRetailPrices.length]=intRow;
						break innerWhile; } }
				i++; }
			if(frmObj["frmMinTank"+(intRow+1)]) i=frmObj["frmMinTank"+(intRow+1)].value;
			intRow++; }
		validateDeliveryRun=validateDeliveryConfirm=true;
		setTimeout("validateDeliveryRun=false;", 1500);  // NEEDED BECAUSE THE LINK IS A "HREF" AND "ONCLICK"
		if(arrNewRetailPrices.length>0 || arrNewExchRates.length>0) {
			var blnStoreExtraChanges=false;
			blnStoreExtraChanges=window.confirm("Please confirm, by clicking 'OK', that you want the new"+((arrNewRetailPrices.length>0)?" retail price(s)"+((arrNewExchRates.length>0)?" and exchange rate(s)":""):" exchange rate(s)")+" saved.");
		  // UPDATE THE FLAG FOR EACH RETAIL PRICE
			if(arrNewRetailPrices.length>0) {
				for(var i in arrNewRetailPrices) {
					if(blnStoreExtraChanges) eval("frmObj.flagStoreRetailPrices"+arrNewRetailPrices[i]+".value=\"1\";");
					else eval("frmObj.flagStoreRetailPrices"+arrNewRetailPrices[i]+".value=\"0\";"); } }
		  // UPDATE THE FLAG FOR EACH EXCHANGE RATE
			if(arrNewExchRates.length>0) {
				for(var i in arrNewExchRates) {
					if(blnStoreExtraChanges) eval("frmObj.flagStoreExchRate"+arrNewExchRates[i]+".value=\"1\";");
					else eval("frmObj.flagStoreExchRate"+arrNewExchRates[i]+".value=\"0\";"); } }
			validateDeliveryConfirm=blnStoreExtraChanges;
			return validateDeliveryConfirm; }
		else {
			disableDeliverySubmit=true;
			return true; } }
	else return validateDeliveryConfirm;
}

// CALCULATIONS ************************************************************************************************************
function updateVolMargin(frmObj, frmObjChanged, intRow, intTank, blnCheckExtras) {
	var i=0;
  // CHECK INPUT CHANGED AND MODIFY THE NUMBER OF DECIMAL PLACES
	if(frmObjChanged!="" && blnCheckExtras) {
		if(frmObjChanged.indexOf("frmDelVolume")!=-1 && !isNaN(parseInt(frmObj["frmDelVolume"+intRow+"["+intTank+"]"].value))) {
/*
 * TEMPORARILY COMMENTED-OUT FOR DARREN BRIGGS
 *
 *			frmObj["frmDelVolume"+intRow+"["+intTank+"]"].value=parseInt(frmObj["frmDelVolume"+intRow+"["+intTank+"]"].value);
		  // CHECK TANK CAPACITY
			if(parseInt(frmObj["frmDelVolume"+intRow+"["+intTank+"]"].value)>parseInt(frmObj["frmTankCapacity"+intRow+"["+intTank+"]"].value)) {
				alert("The delivered volume exceeds the selected tank's capacity of "+parseInt(frmObj["frmTankCapacity"+intRow+"["+intTank+"]"].value)+"\nPlease check the amount.");
				frmObj["frmDelVolume"+intRow+"["+intTank+"]"].value=frmObj["frmTankCapacity"+intRow+"["+intTank+"]"].value;
				frmObjSetFocus(frmObj["frmDelVolume"+intRow+"["+intTank+"]"]);
			}
*/		}
		else if(frmObjChanged.indexOf("frmRetailPriceInc")!=-1 && !isNaN(parseFloat(frmObj["frmRetailPriceInc"+intRow+"["+intTank+"]"].value))) {
			frmObj["frmRetailPriceInc"+intRow+"["+intTank+"]"].value=parseFloat(frmObj["frmRetailPriceInc"+intRow+"["+intTank+"]"].value).toFixed(2);
		  // NOW CHECK THE NEW RETAIL PRICE AGAINST OTHER TANKS WITH THE SAME FUEL
			var intRetail=frmObj["frmRetailPriceInc"+intRow+"["+intTank+"]"].value;
			var txtSearchPhrase=frmObj["frmProduct"+intRow+"["+intTank+"]"].value;
			var i=1;
			var intMaxTankID;
			i=frmObj["frmMinTank"+intRow].value;
			intMaxTankID=frmObj["frmMaxTank"+intRow].value;
			while(i<=intMaxTankID) {
				if(frmObj["frmRetailPriceInc"+intRow+"["+i+"]"]) {
					if(frmObj["frmProduct"+intRow+"["+i+"]"].value==txtSearchPhrase) {
						frmObj["frmRetailPriceInc"+intRow+"["+i+"]"].value=intRetail;
						updateVolMargin(frmObj, frmObj["frmRetailPriceInc"+intRow+"["+i+"]"], intRow, i);
					}
				}
				i++;
			}
		}
		else if(frmObjChanged.indexOf("frmSystemMarginGross1")!=-1 && !isNaN(parseFloat(frmObj["frmSystemMarginGross1"+intRow+"["+intTank+"]"].value))) {
			frmObj["frmSystemMarginGross1"+intRow+"["+intTank+"]"].value=parseFloat(frmObj["frmSystemMarginGross1"+intRow+"["+intTank+"]"].value).toFixed(3);
		  // NOW CHECK THE NEW GROSS MARGIN 1 AGAINST OTHER TANKS WITH THE SAME FUEL
			var intGross=frmObj["frmSystemMarginGross1"+intRow+"["+intTank+"]"].value;
			var txtSearchPhrase=frmObj["frmProduct"+intRow+"["+intTank+"]"].value;
			var i=1;
			while(frmObj["frmSystemMarginGross1"+intRow+"["+i+"]"]) {
				if(frmObj["frmProduct"+intRow+"["+i+"]"].value==txtSearchPhrase) frmObj["frmSystemMarginGross1"+intRow+"["+i+"]"].value=intGross;
				i++;
			}
		}
		else if(frmObjChanged.indexOf("frmSystemMarginGross2")!=-1 && !isNaN(parseFloat(frmObj["frmSystemMarginGross2"+intRow+"["+intTank+"]"].value))) {
			frmObj["frmSystemMarginGross2"+intRow+"["+intTank+"]"].value=parseFloat(frmObj["frmSystemMarginGross2"+intRow+"["+intTank+"]"].value).toFixed(3);
		  // NOW CHECK THE NEW GROSS MARGIN 1 AGAINST OTHER TANKS WITH THE SAME FUEL
			var intGross=frmObj["frmSystemMarginGross2"+intRow+"["+intTank+"]"].value;
			var txtSearchPhrase=frmObj["frmProduct"+intRow+"["+intTank+"]"].value;
			var i=1;
			while(frmObj["frmSystemMarginGross2"+intRow+"["+i+"]"]) {
				if(frmObj["frmProduct"+intRow+"["+i+"]"].value==txtSearchPhrase) frmObj["frmSystemMarginGross2"+intRow+"["+i+"]"].value=intGross;
				i++;
			}
		}
	}
  // CONTRACT TYPE
	var txtContractType=frmObj["frmContractType"].value;
  // SYSTEM VALUES
	var intVAT=frmObj["frmSystemVAT"].value;
  // CONTRACT VALUES
	if(frmObj["frmSystemMarginBase"+intRow+"["+intTank+"]"]) {
		var fltMargin=frmObj["frmSystemMarginBase"+intRow+"["+intTank+"]"].value; // MAY BE UPDATED LATER (DEPENDING ON CONTRACT TYPE)
	} else {
		fltMargin=0;
	}
	if(isNaN(parseFloat(fltMargin)) || parseFloat(fltMargin)<0) {
		fltMargin=0;
		frmObj["frmSystemMarginBase"+intRow+"["+intTank+"]"].value=fltMargin.toFixed(3);
	} else {
		fltMargin=parseFloat(fltMargin);
	}
	var fltMarginOriginal=fltMargin;
	if(txtContractType=="M") {
		var fltSharePercent1=frmObj["frmShare1Percent"+intRow+"["+intTank+"]"].value;
		if(isNaN(parseFloat(fltSharePercent1)) || parseFloat(fltSharePercent1)<0) {
			fltSharePercent1=0;
			frmObj["frmShare1Percent"+intRow+"["+intTank+"]"].value=fltSharePercent1.toFixed(3);
		} else {
			fltSharePercent1=parseFloat(fltSharePercent1);
		}
		var fltSharePercent2=frmObj["frmShare2Percent"+intRow+"["+intTank+"]"].value;
		if(isNaN(parseFloat(fltSharePercent2)) || parseFloat(fltSharePercent2)<0) {
			fltSharePercent2=0;
			frmObj["frmShare2Percent"+intRow+"["+intTank+"]"].value=fltSharePercent2.toFixed(3);
		} else {
			fltSharePercent2=parseFloat(fltSharePercent2);
		}
		var fltThresholdMargin=frmObj["frmThresholdMargin"+intRow+"["+intTank+"]"].value;
		if(isNaN(parseFloat(fltThresholdMargin)) || parseFloat(fltThresholdMargin)<0) {
			fltThresholdMargin=0;
			frmObj["frmThresholdMargin"+intRow+"["+intTank+"]"].value=fltThresholdMargin.toFixed(3);
		} else {
			fltThresholdMargin=parseFloat(fltThresholdMargin);
		}
		var fltThresholdPercent=frmObj["frmThresholdPercent"+intRow+"["+intTank+"]"].value;
		if(isNaN(parseFloat(fltThresholdPercent)) || parseFloat(fltThresholdPercent)<0) {
			fltThresholdPercent=0;
			frmObj["frmThresholdPercent"+intRow+"["+intTank+"]"].value=fltThresholdPercent.toFixed(3);
		} else {
			fltThresholdPercent=parseFloat(fltThresholdPercent);
		}
	} else {
		var fltSharePercent1=0, fltSharePercent2=0, fltThresholdMargin=0, fltThresholdPercent=0;
	}
  // INPUTS
	var intVolume=frmObj["frmDelVolume"+intRow+"["+intTank+"]"].value;
	if(isNaN(parseInt(intVolume)) || parseInt(intVolume)<0) {
		intVolume=0;
		frmObj["frmDelVolume"+intRow+"["+intTank+"]"].value=intVolume.toFixed(3);
	} else {
		intVolume=parseInt(intVolume);
	}
	var fltRetail=frmObj["frmRetailPriceInc"+intRow+"["+intTank+"]"].value;
	if(isNaN(parseFloat(fltRetail)) || parseFloat(fltRetail)<0) {
		fltRetail=0;
		frmObj["frmRetailPriceInc"+intRow+"["+intTank+"]"].value=fltRetail.toFixed(2);
	} else {
		fltRetail=parseFloat(fltRetail);
	}
	if(txtContractType=="M") {
		var fltGross1=frmObj["frmSystemMarginGross1"+intRow+"["+intTank+"]"].value;
		if(isNaN(parseFloat(fltGross1)) || parseFloat(fltGross1)<0) {
			fltGross1=0;
			frmObj["frmSystemMarginGross1"+intRow+"["+intTank+"]"].value=fltGross1.toFixed(3);
		} else {
			fltGross1=parseFloat(fltGross1);
		}
		var fltGross2=frmObj["frmSystemMarginGross2"+intRow+"["+intTank+"]"].value;
		if(isNaN(parseFloat(fltGross2)) || parseFloat(fltGross2)<0) {
			fltGross2=0;
			frmObj["frmSystemMarginGross2"+intRow+"["+intTank+"]"].value=fltGross2.toFixed(3);
		} else {
			fltGross2=parseFloat(fltGross2);
		}
	} else {
		var fltGross1=0, fltGross2=0;
	}
  // EARLIER CALCULATIONS
	if(txtContractType=="S") {
		if(fltRetail==0) {
			var fltCostPrice=0;
		} else {
			var fltCostPrice=((fltRetail/(1+(intVAT/100)))-fltMargin);
		}
		frmObj["frmCostPriceRaw"+intRow+"["+intTank+"]"].value=fltCostPrice;
		frmObj["frmTotalMarginPPL"+intRow+"["+intTank+"]"].value=fltMargin.toFixed(3);
		frmObj["frmCostPrice"+intRow+"["+intTank+"]"].value=fltCostPrice.toFixed(3);
	} else {
		var fltCostPrice=frmObj["frmCostPriceRaw"+intRow+"["+intTank+"]"].value;
		if(isNaN(parseFloat(fltCostPrice))) {
			fltCostPrice=0;
			frmObj["frmCostPriceRaw"+intRow+"["+intTank+"]"].value=fltCostPrice;
			frmObj["frmCostPrice"+intRow+"["+intTank+"]"].value=fltCostPrice.toFixed(3);
		} else {
			fltCostPrice=parseFloat(fltCostPrice);
		}
	}
  // CALCULATIONS
	var fltRetailPriceExc=0, fltActualRetailMargin=0, fltMarginSharePPL=0, fltThreshold=0;
	if(!isNaN(parseInt(intVolume)) && !isNaN(parseFloat(fltRetail))) {
	  // RETAIL PRICE (exc. VAT)
		fltRetailPriceExc=fltRetail/(1+(intVAT/100));
		if(txtContractType!="M") {
			frmObj["frmRetailPriceExcRaw"+intRow+"["+intTank+"]"].value=fltRetailPriceExc;
			frmObj["frmRetailPriceExc"+intRow+"["+intTank+"]"].value=fltRetailPriceExc.toFixed(3);
		} else {
		  // ACTUAL RETAIL MARGIN (ppl)
			fltActualRetailMargin=(fltRetailPriceExc-fltCostPrice);
			frmObj["frmActualRetailMargin"+intRow+"["+intTank+"]"].value=fltActualRetailMargin.toFixed(3);
		  // MARGIN SHARE (ppl)
			var tmpGross1Calc=fltActualRetailMargin-fltGross1;
			if(tmpGross1Calc<0) {
				tmpGross1Calc=0;
			}
			if(fltGross2>0) {
				var tmpGross2Calc=fltActualRetailMargin-fltGross2;
			} else {
				var tmpGross2Calc=0;
			}
			if(tmpGross2Calc<0) {
				tmpGross2Calc=0;
			}
			tmpGross1Calc=tmpGross1Calc-tmpGross2Calc;
			if(tmpGross1Calc<0) {
				tmpGross1Calc=0;
			}
			fltMarginSharePPL=(tmpGross1Calc*fltSharePercent1);
			if(tmpGross2Calc>0) {
				fltMarginSharePPL+=(tmpGross2Calc*fltSharePercent2);
			}
			if(fltMarginSharePPL<0) {
				fltMarginSharePPL=0;
			}
			fltThreshold=fltActualRetailMargin-fltThresholdMargin;
			if(fltThreshold<0) {
				fltMarginSharePPL=(fltThreshold*fltThresholdPercent);
			} else if(fltMarginSharePPL<0) {
				fltMarginSharePPL=0;
			}
			frmObj["frmMarginShare"+intRow+"["+intTank+"]"].value=fltMarginSharePPL.toFixed(3);
		}
	  // TOTAL COST (exc. VAT)
		if(intVolume>0) {
			var tmpTotalCost=(intVolume*fltCostPrice)/100;
		} else {
			var tmpTotalCost=0;
		}
		frmObj["frmTotalCostRaw"+intRow+"["+intTank+"]"].value=tmpTotalCost;
		frmObj["frmTotalCost"+intRow+"["+intTank+"]"].value=parseFloat(tmpTotalCost).toFixed(2);
	  // TOTAL MARGIN (ppl)
		if(txtContractType=="M") {
			if(intVolume>0) {
				var fltTotalMarginPPL=(fltMargin+fltMarginSharePPL);
			} else {
				var fltTotalMarginPPL=0;
			}
			frmObj["frmTotalMarginPPLRaw"+intRow+"["+intTank+"]"].value=fltTotalMarginPPL;
			frmObj["frmTotalMarginPPL"+intRow+"["+intTank+"]"].value=fltTotalMarginPPL.toFixed(3);
		  // BASE MARGIN (Â£)
			var fltBaseMarginPounds=(intVolume*fltMargin)/100;
			frmObj["frmBaseMarginTotalRaw"+intRow+"["+intTank+"]"].value=fltBaseMarginPounds;
			frmObj["frmBaseMarginTotal"+intRow+"["+intTank+"]"].value=fltBaseMarginPounds.toFixed(2);
		  // MARGIN SHARE (Â£)
			var fltMarginSharePounds=(intVolume*fltMarginSharePPL)/100;
			frmObj["frmShareMarginTotalRaw"+intRow+"["+intTank+"]"].value=fltMarginSharePounds;
			frmObj["frmShareMarginTotal"+intRow+"["+intTank+"]"].value=fltMarginSharePounds.toFixed(2);
		  // TOTAL MARGIN AMOUNT (Â£)
			frmObj["frmTotalMarginAmountRaw"+intRow+"["+intTank+"]"].value=(fltBaseMarginPounds+fltMarginSharePounds);
			frmObj["frmTotalMarginAmount"+intRow+"["+intTank+"]"].value=(fltBaseMarginPounds+fltMarginSharePounds).toFixed(2);
		} else {
			if(intVolume>0) {
				var fltTotalMarginPPL=(fltRetailPriceExc-fltCostPrice);
			}
			else {
				var fltTotalMarginPPL=0;
			}
			frmObj["frmTotalMarginPPLRaw"+intRow+"["+intTank+"]"].value=fltTotalMarginPPL;
			frmObj["frmTotalMarginPPL"+intRow+"["+intTank+"]"].value=fltTotalMarginPPL.toFixed(3);
		  // TOTAL MARGIN AMOUNT (Â£)
			frmObj["frmTotalMarginAmountRaw"+intRow+"["+intTank+"]"].value=(intVolume*(fltTotalMarginPPL/100));
			frmObj["frmTotalMarginAmount"+intRow+"["+intTank+"]"].value=(intVolume*(fltTotalMarginPPL/100)).toFixed(2);
		}
	  // CALCULATE THE NEW "TOTALS"
		if(blnCheckExtras) {
			updateVolMarginTotals(frmObj);
		}
	}
}
function updateVolMarginTotals(frmObj) {
	var intTotalDelivered=0, intTotalCostExcVAT=0, intTotalMarginPPL=0, intTotalBaseMarginPounds=0, intTotalMarginSharePounds=0, intTotalMarginAmountPounds=0;
  // CHECK TO SEE IF THE TOTALS ARE DISPLAYED
	if(frmObj["frmTotalDelivered"]) {
	  // CONTRACT TYPE
		var txtContractType=frmObj["frmContractType"].value;
		var intRow=1, i=1;
	  // SYSTEM VALUES
		var intVAT=frmObj["frmSystemVAT"].value;
	  // ADD UP TOTALS
		var intMaxTankID;
		i=frmObj["frmMinTank"+intRow].value;
		while(frmObj["frmTotalCostRaw"+intRow+"["+i+"]"]) {
			i=frmObj["frmMinTank"+intRow].value;
			intMaxTankID=frmObj["frmMaxTank"+intRow].value;
			while(i<=intMaxTankID) {
				if(frmObj["frmTotalCostRaw"+intRow+"["+i+"]"]) {
					if(!isNaN(parseInt(frmObj["frmDelVolume"+intRow+"["+i+"]"].value))) intTotalDelivered+=parseInt(frmObj["frmDelVolume"+intRow+"["+i+"]"].value)
					if(!isNaN(parseFloat(frmObj["frmTotalCostRaw"+intRow+"["+i+"]"].value))) intTotalCostExcVAT+=parseFloat(frmObj["frmTotalCostRaw"+intRow+"["+i+"]"].value);
					if(!isNaN(parseFloat(frmObj["frmTotalMarginPPLRaw"+intRow+"["+i+"]"].value))) intTotalMarginPPL+=parseFloat(frmObj["frmTotalMarginPPLRaw"+intRow+"["+i+"]"].value);
					if(txtContractType=="M") {
						if(!isNaN(parseFloat(frmObj["frmBaseMarginTotalRaw"+intRow+"["+i+"]"].value))) intTotalBaseMarginPounds+=parseFloat(frmObj["frmBaseMarginTotalRaw"+intRow+"["+i+"]"].value);
						if(!isNaN(parseFloat(frmObj["frmShareMarginTotalRaw"+intRow+"["+i+"]"].value))) intTotalMarginSharePounds+=parseFloat(frmObj["frmShareMarginTotalRaw"+intRow+"["+i+"]"].value); }
					if(!isNaN(parseFloat(frmObj["frmTotalMarginAmountRaw"+intRow+"["+i+"]"].value))) intTotalMarginAmountPounds+=parseFloat(frmObj["frmTotalMarginAmountRaw"+intRow+"["+i+"]"].value); }
				i++; }
			if(frmObj["frmMinTank"+(intRow+1)]) i=frmObj["frmMinTank"+(intRow+1)].value;
			intRow++; }
	  // STANDARD MARGIN TOTAL PPL
		if(intTotalDelivered!=0) intTotalMarginPPL=(intTotalMarginAmountPounds/intTotalDelivered)*100;
		else intTotalMarginPPL=0;
	  // DELIVERED TOTALS
		frmObj["frmTotalDelivered"].value=intTotalDelivered;
		frmObj["frmTotalDeliveredPromo"].value=intTotalDelivered;
	  // TOTALS, EXCLUDING VAT
		frmObj["frmTotalCostTS"].value=intTotalCostExcVAT.toFixed(2);
		frmObj["frmTotalMarginPPLTS"].value=intTotalMarginPPL.toFixed(3);
		if(txtContractType=="M") {
			frmObj["frmTotalBaseMarginTS"].value=intTotalBaseMarginPounds.toFixed(2);
			frmObj["frmTotalShareMarginTS"].value=intTotalMarginSharePounds.toFixed(2); }
		frmObj["frmTotalMarginAmountTS"].value=intTotalMarginAmountPounds.toFixed(2);
	  // VAT
		var intTotalCostExcVAT_VAT=intTotalCostExcVAT*(intVAT/100);
		var intTotalMarginPPL_VAT=intTotalMarginPPL*(intVAT/100);
		var intTotalBaseMarginPounds_VAT=intTotalBaseMarginPounds*(intVAT/100);
		var intTotalMarginSharePounds_VAT=intTotalMarginSharePounds*(intVAT/100);
		var intTotalMarginAmountPounds_VAT=intTotalMarginAmountPounds*(intVAT/100);
		frmObj["frmTotalCostTV"].value=intTotalCostExcVAT_VAT.toFixed(2);
		frmObj["frmTotalMarginPPLTV"].value=intTotalMarginPPL_VAT.toFixed(3);
		if(txtContractType=="M") {
			frmObj["frmTotalBaseMarginTV"].value=intTotalBaseMarginPounds_VAT.toFixed(2);
			frmObj["frmTotalShareMarginTV"].value=intTotalMarginSharePounds_VAT.toFixed(2); }
		frmObj["frmTotalMarginAmountTV"].value=intTotalMarginAmountPounds_VAT.toFixed(2);
	  // COMPLETE TOTALS, INCLUDING VAT
		frmObj["frmTotalCostTT"].value=(intTotalCostExcVAT_VAT+intTotalCostExcVAT).toFixed(2);
		frmObj["frmTotalMarginPPLTT"].value=(intTotalMarginPPL_VAT+intTotalMarginPPL).toFixed(3);
		if(txtContractType=="M") {
			frmObj["frmTotalBaseMarginTT"].value=(intTotalBaseMarginPounds_VAT+intTotalBaseMarginPounds).toFixed(2);
			frmObj["frmTotalShareMarginTT"].value=(intTotalMarginSharePounds_VAT+intTotalMarginSharePounds).toFixed(2); }
		frmObj["frmTotalMarginAmountTT"].value=(intTotalMarginAmountPounds_VAT+intTotalMarginAmountPounds).toFixed(2);
	  // PROMOTION COST
		var fltPromoCost=frmObj["frmPromoCost"].value;
		if(isNaN(parseFloat(fltPromoCost)) || parseFloat(fltPromoCost)<0) { fltPromoCost=0; frmObj["frmPromoCost"].value=fltPromoCost.toFixed(3); } else fltPromoCost=parseFloat(fltPromoCost);
		var fltPromoCostExcVAT=(parseInt(intTotalDelivered)*parseFloat(fltPromoCost))/100;
		frmObj["frmPromoExcVAT"].value=fltPromoCostExcVAT.toFixed(3);
		var fltPromoCostPPL=intTotalMarginPPL-fltPromoCost;
		if(fltPromoCostPPL<0) fltPromoCostPPL=0;
		var fltPromoCostVAT=fltPromoCostExcVAT*(intVAT/100);
		frmObj["frmPromoVAT"].value=fltPromoCostVAT.toFixed(3);
		frmObj["frmPromoTotal"].value=(fltPromoCostExcVAT+fltPromoCostVAT).toFixed(2);
		frmObj["frmPromoPPL"].value=fltPromoCostPPL.toFixed(3);
		var fltPromoAmountExcVAT=(fltPromoCostPPL*intTotalDelivered)/100;
		frmObj["frmPromoAmountExcVAT"].value=fltPromoAmountExcVAT.toFixed(3);
		var fltPromoAmountVAT=fltPromoAmountExcVAT*(intVAT/100);
		frmObj["frmPromoAmountVAT"].value=fltPromoAmountVAT.toFixed(3);
		frmObj["frmPromoAmountIncVAT"].value=(fltPromoAmountExcVAT+fltPromoAmountVAT).toFixed(2); }
	return true;
}

// DATE FUNCTIONS **********************************************************************************************************
function getLeapYear(storeYear) {
	if(!(storeYear%4)) {
		if(storeYear%100) return true;
		else if(!(storeYear%400)) return true; }
	return false;
}
function getNumberOfDays(storeYear,storeMonth) {
	var storeMonthArray=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	if(getLeapYear(storeYear)) storeMonthArray[1]=29;
	if((storeYear>1990) && (storeMonth>=0) && (storeMonth<=11)) return parseInt(storeMonthArray[storeMonth]);
	return 0;
}
function getMonthName(intMonth) {
	var arrMonths=new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
	if(intMonth>=0 && intMonth<=11) return arrMonths[intMonth];
	else return "";
}

// DETECTION FUNCTION ******************************************************************************************************
var flash2Installed=false, flash3Installed=false, flash4Installed=false, flash5Installed=false, flash6Installed=false, flash7Installed=false, flash8Installed=false;
var blnDisplayFlash=false;
function detectFlash() {
	if(br=="IE" && brPlatform=="windows") {
		document.write('<SCR' + 'IPT LANGUAGE=VBScript\>\n');
		document.write('on error resume next \n');
		document.write('flash2Installed=(IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.2")))\n');
		document.write('flash3Installed=(IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.3")))\n');
		document.write('flash4Installed=(IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.4")))\n');
		document.write('flash5Installed=(IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.5")))\n');
		document.write('flash6Installed=(IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.6")))\n');
		document.write('flash7Installed=(IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.7")))\n');
		document.write('flash8Installed=(IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.8")))\n');
		document.write('</SCR' + 'IPT\> \n'); }
	if(navigator.plugins) {
		if(navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var isVersion2=navigator.plugins["Shockwave Flash 2.0"]?" 2.0":"";
			var flashDescription=navigator.plugins["Shockwave Flash"+isVersion2].description;
			var flashVersion=parseInt(flashDescription.charAt(flashDescription.indexOf(".")-1));
			for(var i=2;i<=flashMaxVersion;i++) eval("flash"+i+"Installed=(flashVersion=="+i+");"); } }
	for(var i=2;i<=flashMaxVersion;i++) {
		if(eval("flash"+i+"Installed")==true) flashActualVersion=i; }
	blnDisplayFlash=(flashActualVersion>=flashRequiredVersion);
}

// FORM FUNCTIONS **********************************************************************************************************
function frmObjSetFocus(docFrmElem, blnDoNotSelect) {
	if(docFrmElem) {
		docFrmElem.focus();
		if(docFrmElem.type=="text" || docFrmElem.type=="textarea" || docFrmElem.type=="password") {
		  // HIGHLIGHT ALL
			if(!blnDoNotSelect) docFrmElem.select();
		  // PUT CURSOR TO THE END
			else docFrmElem.value=docFrmElem.value; } }
}
function formUpdateCounter(txtValue, intMax) {
	var intCount=0;
	if(!isNaN(intCount=parseInt(txtValue.length)) && !isNaN(parseInt(intMax))) winStatus("Character count: "+intCount+", Characters left: "+(intMax-intCount));
}
function formFindSelectValue(docFrmElem, txtValToFind) {
	var intSelectedIndex=-1;
	for(var i=0;i<docFrmElem.length;i++) {
		if(docFrmElem.options[i].value==txtValToFind) {
			intSelectedIndex=i;
			break; } }
	return intSelectedIndex;
}

// FORMAT FUNCTION *********************************************************************************************************
function formatFloat() {
	if(arguments.length>=1) var intDecimalPlaces=arguments[0];
	else var intDecimalPlaces=3;
	if(!intDecimalPlaces || isNaN(parseInt(intDecimalPlaces)) || parseInt(intDecimalPlaces)>10) intDecimalPlaces=3;
	else intDecimalPlaces=parseInt(intDecimalPlaces);
	var fltReturn=0;
	var txtZeroFill=new String("0000000000");
	if(!isNaN(parseFloat(this))) {
		var arrParts=this.toString().split(".");
		if(arrParts.length==1) fltReturn=arrParts[0]+"."+txtZeroFill.substring(0, intDecimalPlaces);
		else if(arrParts.length>1) {
			var tmpDecimals=new String(arrParts[1]);
			tmpDecimals=tmpDecimals+txtZeroFill;
			fltReturn=arrParts[0]+"."+tmpDecimals.substring(0, intDecimalPlaces); } }
	return fltReturn;
}
// IF THE "toFixed()" FUNCTION DOES NOT EXIST (MEANS OLD BROWSER) - CREATE IT
if(typeof Number.prototype.toFixed=="undefined") Number.prototype.toFixed=formatFloat;

// IMAGE FUNCTIONS *********************************************************************************************************
var txtImgLoc="/img/", txtNavOver="-on.gif", txtNavOff="-off.gif", txtNavSel="-on.gif";
var myNavImages=new Array, myOtherImages=new Array;
var preNavImgOver=new Array, preNavImgSel=new Array, preNavImgOff=new Array;
var preOtherImages=new Array;
function imgPreload() {
	if(br!="") {
		var txtOff=txtSel="";
		for(var i in myNavImages) {
			preNavImgOver[i]=new Image();
			preNavImgOver[i].src=txtImgLoc+(myNavImages[i]+txtNavOver);
			txtOff+="preNavImgOff['"+i+"']=new Image(); preNavImgOff['"+i+"'].src=txtImgLoc+\"/\"+(myNavImages['"+i+"']+txtNavOff); ";
			if(txtNavOver!=txtNavSel) txtSel+="preNavImgSel['"+i+"']=new Image(); preNavImgSel['"+i+"'].src=txtImgLoc+\"/\"+(myNavImages['"+i+"']+txtNavSel); "; }
		for(var i=0;i<myOtherImages.length;i++) {
			preOtherImages[i]=new Image();
			preOtherImages[i].src=myOtherImages[i]; }
		if(txtOff!="") eval(txtOff);
		if(txtSel!="") eval(txtSel); }
}
function imgSwap(imgName, imgSrc) {
	if(br!="") {
		if(document[imgName]) document[imgName].src=imgSrc; }
}

// LAYER FUNCTIONS *********************************************************************************************************
function layerMakeHidden(objLayer) {
	if(docLay) eval(docLay+txtBrack1+"'"+objLayer+"'"+txtBrack2+txtStyle+".visibility='"+txtHide+"';");
}
function layerMakeVisible(objLayer) {
	if(docLay) eval(docLay+txtBrack1+"'"+objLayer+"'"+txtBrack2+txtStyle+".visibility='"+txtShow+"';");
}
function layerGetLeft(objLayer) {
	if(docLay) return parseInt(eval(docLay+txtBrack1+"'"+objLayer+"'"+txtBrack2+txtLeft));
	return parseInt("ERR");
}
function layerMoveToLeft(objLayer, intPixelPos) {
	if(docLay && !isNaN(parseInt(intPixelPos))) eval(docLay+txtBrack1+"'"+objLayer+"'"+txtBrack2+txtStyle+txtLeftPos+"="+intPixelPos+";");
}
function layerSetWidth(objLayer, intPixelPos) {
	if(docLay && !isNaN(parseInt(intPixelPos))) eval(docLay+txtBrack1+"'"+objLayer+"'"+txtBrack2+txtStyle+".width="+intPixelPos+";");
}
function copyChange(objLayer, txtCopy) {
	if(br=="IE" || br=="NS6") eval("if("+docLay+txtBrack1+"'"+objLayer+"'"+txtBrack2+") "+docLay+txtBrack1+"'"+objLayer+"'"+txtBrack2+".innerHTML=txtCopy;");
}
var timerScroll;
function scrollLayer(intMoveLayerBy, intMoveLayerTo) {
	var intCurrentPosTab=layerGetLeft("calcHelpTabDiv");
	var intCurrentPosBox=layerGetLeft("calcHelpBoxDiv");
  // START MOVING
	if((intCurrentPosTab<intMoveLayerTo && intMoveLayerTo>0) || (intCurrentPosTab>intMoveLayerTo && intMoveLayerTo<=0)){
		layerMoveToLeft("calcHelpTabDiv", intCurrentPosTab+intMoveLayerBy);
		layerMoveToLeft("calcHelpBoxDiv", intCurrentPosBox+intMoveLayerBy);
		intCurrentPosTab=layerGetLeft("calcHelpTabDiv");
		intCurrentPosBox=layerGetLeft("calcHelpBoxDiv");
		timerScroll=setTimeout("scrollLayer("+intMoveLayerBy+", "+intMoveLayerTo+")", intHelpPauseBy); }
}
var blnHelpOut=false;
function switchHelp() {
	if(blnHelpReady) {
		clearTimeout(timerScroll);
	  // MOVE LAYERS
		var intCurrentPosTab=layerGetLeft("calcHelpTabDiv");
		var intCurrentPosBox=layerGetLeft("calcHelpBoxDiv");
		if(!blnHelpOut) {
		  // SWAP IMAGE AND TEXT
			imgSwap("helpTab", txtImgLoc+myNavImages["helpTab"]+txtNavSel);
			document.images["helpTab"].alt="Hide the help documentation";
			scrollLayer(intHelpMoveBy, intHelpMaxWidth); }
		else {
		  // SWAP IMAGE AND TEXT
			imgSwap("helpTab", txtImgLoc+myNavImages["helpTab"]+txtNavOff);
			document.images["helpTab"].alt="Show the help documentation";
			scrollLayer(intHelpMoveBy*-1, 0); }
	  // SWAP STATUS
		blnHelpOut=(!blnHelpOut); }
  // REMOVE THE FOCUS FROM THE CLICKED ON IMAGE
	window.focus();
}
var blnHelpReady=false;
function initHelp() {
  // CHECK VARIABLES
	if(!intHelpMaxWidth) intHelpMaxWidth=200;
	if(!intHelpMoveBy) intHelpMoveBy=10;
	if(!intHelpPauseBy) intHelpPauseBy=50;
	layerSetWidth("calcHelpBoxDiv", intHelpMaxWidth);
	layerMoveToLeft("calcHelpBoxDiv", intHelpMaxWidth*-1);
	layerMakeVisible("calcHelpBoxDiv");
	blnHelpReady=true;
}

// VALIDATION FUNCTIONS ****************************************************************************************************
function validateFullDate(docFrmElem, txtErrorMsg, intDefMonths, blnCheckFuture) {
// TO CALL: validateFullDate(this, 'Please make sure you have entered a valid date!\\nIt should not be more than '+intDefMonths+' months in the past as well as not being in the future!\\n- E.G. (a date)', intDefMonths, true);
	var blnError=false;
	if(docFrmElem) {
		var arrDate=docFrmElem.value.split("/", 3);
		if(arrDate.length==3) {
		  // MAKE SURE DATE ENTERED IS IN CORRECT FORMAT
			if(arrDate[2]>=2000) arrDate[2]-=2000;
		  // "parseInt()" FUNCTION DOESN'T WORK FOR "08" OR "09"
//			alert(parseInt("01")+" - "+parseInt("02")+" - "+parseInt("03")+" - "+parseInt("04")+" - "+parseInt("05")+" - "+parseInt("06")+" - "+parseInt("07")+" - "+parseInt("08")+" - "+parseInt("09"))
			if(arrDate[0].toString()=="08") arrDate[0]=8;
			else if(arrDate[0].toString()=="09") arrDate[0]=9;
			if(arrDate[1].toString()=="08") arrDate[1]=8;
			else if(arrDate[1].toString()=="09") arrDate[1]=9;
						if(arrDate[2].toString()=="08") arrDate[2]=8;
			else if(arrDate[2].toString()=="09") arrDate[2]=9;
		
			var tmpReturnDate=((parseInt(arrDate[0])<10)?"0":"")+parseInt(arrDate[0]).toString()+"/"+((parseInt(arrDate[1])<10)?"0":"")+parseInt(arrDate[1]).toString()+"/"+((parseInt(arrDate[2])<10)?"0":"")+parseInt(arrDate[2]).toString();
			if(docFrmElem.value.toString()!=tmpReturnDate.toString()) docFrmElem.value=tmpReturnDate;
			if(parseInt(arrDate[2])<100) arrDate[2]="20"+((parseInt(arrDate[2])<10)?"0":"")+parseInt(arrDate[2]).toString();
			arrDate[1]--;
			if(isNaN(parseInt(arrDate[2])) || isNaN(parseInt(arrDate[1])) || isNaN(parseInt(arrDate[0]))) blnError=true;
			else if((parseInt(arrDate[2])<1990) || (parseInt(arrDate[1])<0) || (parseInt(arrDate[1])>11) || (parseInt(arrDate[0])<1) || (parseInt(arrDate[0])>31)) blnError=true;
			else if(getNumberOfDays(arrDate[2], arrDate[1])<arrDate[0]) blnError=true;
			else if((intDefMonths && !isNaN(parseInt(intDefMonths)) && intDefMonths>0) || blnCheckFuture) {
				var dateDeferred=new Date();
				var dateEntered=new Date(arrDate[2], arrDate[1], arrDate[0], dateDeferred.getHours(), dateDeferred.getMinutes(), dateDeferred.getSeconds(), dateDeferred.getMilliseconds());
				if(intDefMonths && !isNaN(parseInt(intDefMonths)) && intDefMonths>0) {
				  // CHECK DEFERRED DATE, IF APPLICABLE
					dateDeferred.setMonth(dateDeferred.getMonth()-intDefMonths);
					if(dateDeferred>dateEntered) blnError=true; }
				if(!blnError && blnCheckFuture) {
				  // CHECK TO MAKE SURE THE DATE IS NOT IN THE FUTURE
					var today=new Date();
					if(dateEntered>today) blnError=true; } } }
		else blnError=true;
		if(blnError) {
			if(!txtErrorMsg) txtErrorMsg="Error at form entry: '"+docFrmDay.name+"'";
			alert(txtErrorMsg);
			frmObjSetFocus(docFrmElem);
			return false; }
		else return true; }
	else return false;
}
function validateDate(docFrmYear, docFrmMonth, docFrmDay, txtErrorMsg) {
	var blnError=false;
	if(docFrmYear && docFrmMonth && docFrmDay) {
		var intYear=docFrmYear.options[docFrmYear.selectedIndex].value;
		var intMonth=docFrmMonth.options[docFrmMonth.selectedIndex].value-1;
		var intDay=docFrmDay.options[docFrmDay.selectedIndex].value;
		if(isNaN(parseInt(intYear)) || isNaN(parseInt(intMonth)) || isNaN(parseInt(intDay))) blnError=true;
		else if((parseInt(intYear)<1990) || (parseInt(intMonth)<0) || (parseInt(intMonth)>11) || (parseInt(intDay)<1) || (parseInt(intDay)>31)) blnError=true;
		else if(getNumberOfDays(intYear, intMonth)<intDay) blnError=true;
		if(blnError) {
			if(!txtErrorMsg) txtErrorMsg="Error at form entry: '"+docFrmDay.name+"'";
			alert(txtErrorMsg);
			frmObjSetFocus(docFrmDay);
			return false; }
		else return true; }
	else return false;
}
function validateEmail(docFrmElem, txtErrorMsg, blnOptional) {
	if(docFrmElem) {
		if(!docFrmElem.value && blnOptional) return true;
		var regExp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z])+$/;
		if(!regExp.test(docFrmElem.value)) {
			if(!txtErrorMsg) txtErrorMsg="Error at form entry: '"+docFrmElem.name+"'";
			alert(txtErrorMsg);
			frmObjSetFocus(docFrmElem);
			return false; }
		return true; }
	else return false;
}
function validateImageRef(docFrmElem, txtErrorMsg, blnOptional) {
	return validateFileExtension(docFrmElem, txtErrorMsg, blnOptional, "gif", "jpg", "jpeg");
}
function validateInteger(docFrmElem, txtErrorMsg, intMin, intMax, blnOptional) {
	if(docFrmElem) {
		if(!docFrmElem.value || isNaN(parseInt(docFrmElem.value))) return blnOptional;
		if(!intMin) intMin=1;
		if(!intMax) intMax=65536;
		if(parseInt(docFrmElem.value)<intMin || parseInt(docFrmElem.value)>intMax) {
			if(!txtErrorMsg) txtErrorMsg="Error at form entry: '"+docFrmElem.name+"'";
			alert(txtErrorMsg);
			frmObjSetFocus(docFrmElem);
			return false; }
		return true; }
	else return false;
}
function validateFloat(docFrmElem, txtErrorMsg, intMin, intMax, blnOptional) {
	var blnOK=false;
	if(docFrmElem) {
		if(!docFrmElem.value || isNaN(parseFloat(docFrmElem.value))) blnOK=blnOptional;
		else {
			if(!intMin) intMin=-1;
			if(!intMax) intMax=65536;
			blnOK=(parseInt(docFrmElem.value)>intMin && parseInt(docFrmElem.value)<intMax); }
		if(!blnOK) {
			if(!txtErrorMsg) txtErrorMsg="Error at form entry: '"+docFrmElem.name+"'";
			alert(txtErrorMsg);
			frmObjSetFocus(docFrmElem);
			return false; }
		return true; }
	else return false;
}
function validatePdfRef(docFrmElem, txtErrorMsg, blnOptional) {
	return validateFileExtension(docFrmElem, txtErrorMsg, blnOptional, "pdf");
}
function validateFileExtension(docFrmElem, txtErrorMsg, blnOptional) {
	var blnError=false;
	if(docFrmElem) {
		if(docFrmElem.value=="") return blnOptional;
		else {
			var splitElement=docFrmElem.value.split(".");
			if(splitElement.length<2) blnError=true;
			else {
				var fileExtension=splitElement[(splitElement.length-1)].toLowerCase();
				if(arguments.length>3) {
					blnError=true;
					for(var i=3;i<arguments.length;i++) {
					  // CHECK TO SEE IF THE ARGUMENTS PASSED CONTAIN "."
						if(fileExtension.indexOf(".")!=-1 && arguments[i].toLowerCase()=="."+fileExtension) blnError=false;
						else if(fileExtension.indexOf(".")==-1 && arguments[i].toLowerCase()==fileExtension) blnError=false;
						if(!blnError) break; } } } }
		if(blnError) {
			if(!txtErrorMsg) txtErrorMsg="Error at form entry: '"+docFrmDay.name+"'";
			alert(txtErrorMsg);
			frmObjSetFocus(docFrmElem);
			return false; }
		else return true; }
	return false;
}
function validateSelect(docFrmElem, txtErrorMsg, blnCheckVal) {
	if(docFrmElem) {
		var blnError=(blnCheckVal)?(docFrmElem.options[docFrmElem.selectedIndex].value==""):((docFrmElem.type=="select-multiple" && docFrmElem.selectedIndex==-1) || (docFrmElem.type=="select-one" && docFrmElem.selectedIndex==0));
		if(blnError) {
			if(!txtErrorMsg) txtErrorMsg="Error at form entry: '"+docFrmElem.name+"'";
			alert(txtErrorMsg);
			frmObjSetFocus(docFrmElem);
			return false; }
		return true; }
	else return false;
}
function validateString(docFrmElem, txtErrorMsg, intMin, intMax, blnOptional) {
	if(docFrmElem) {
		if(!docFrmElem.value && blnOptional) return true;
		if(!intMin) intMin=1;
		if(!intMax) intMax=65536;
		if(!docFrmElem.value || docFrmElem.value.length<intMin || docFrmElem.value.length>intMax) {
			if(!txtErrorMsg) txtErrorMsg="Error at form entry: '"+docFrmElem.name+"'";
			alert(txtErrorMsg);
			frmObjSetFocus(docFrmElem);
			return false; }
		return true; }
	else return false;
}
function validateURL(docFrmElem, txtErrorMsg, blnOptional) {
	var blnError=false;
	if(docFrmElem) {
		if(docFrmElem.value=="" && blnOptional) return true;
		else {
			var splitElement=docFrmElem.value.split("://");
			if(splitElement.length!=2) blnError=true;
			else if((splitElement[0]!="http" && splitElement[0]!="https") || (splitElement[1].length<6)) blnError=true;
			else {
				var splitElement2=splitElement[1].split(".");
				if(splitElement2.length<3) blnError=true;
				else if((splitElement2[0].length<2) || (splitElement2[1].length<2) || (splitElement2[2].length<2)) blnError=true; }
			if(blnError) {
				if(!txtErrorMsg) txtErrorMsg="Error at form entry: '"+docFrmDay.name+"'";
				alert(txtErrorMsg);
				frmObjSetFocus(docFrmElem);
				return false; }
			else return true; } }
	return false;
}
function validateLogin(frmObjEmail, frmObjPass) {
	if(frmObjEmail && frmObjPass) return (validateEmail(frmObjEmail, "Please make sure you have entered a valid email address.") && validateString(frmObjPass, "Please make sure you have entered your password."));
	else return false;
}

// WINDOW FUNCTIONS ********************************************************************************************************
function winUpdateOpener(txtURL) {
	if(window.opener && !window.opener.closed) {
		window.opener.location.href=txtURL;
		window.opener.focus();
		setTimeout("top.close();", 1000);
		return false; }
}
var timerID;
function winStatus(txt) {
  // NETSCAPE 6 WILL OVER-RIDE THE STATUS BAR TEXT WITH THE URL IF THERE IS NOT A SLIGHT DELAY!
  // - HOPEFULLY THIS WILL BE SORTED OUT IN THE FUTURE!?
	var displayMe;
	if(txt) displayMe=txt;
	else displayMe="";
	if(timerID) clearTimeout(timerID);
	if(br=="NS6") timerID=setTimeout("window.status='"+displayMe+"'",1);
	else window.status=displayMe;
	return true;
}
var popupName, popupDate, popupSearch;
function winNew(winName, url, theWidth, theHeight, scroll, showToolbar, allowResize, showStatus, showMenubar, showLocation) {
	var txtNewHost="";
	if(winName=="winSoon") {
		url="/coming_soon.html";
		theWidth=400;
		theHeight=350; }
	if(url.indexOf("http")!=-1) {
	  // THIS IS USED SO WE CAN ALWAYS GIVE "FOCUS" TO POPUP (EVEN EXTERNAL)
		var arrItems=url.split(/\//, 2);
		if(arrItems.length==2) txtNewHost=arrItems[1]; }
	else txtNewHost=self.location.hostname;
	window.focus();
	if((br!="IE") && (url.indexOf(".pdf")!=-1 || winName=="winPDF")) {
		top.location.href=url;
		return false; }
	if(url) {
		if(url.indexOf(".pdf")!=-1 || winName=="winPDF") {
			theWidth=770;
			theHeight=550;
			scroll="yes";
			allowResize="1"; }
		else if(winName=="preReg") {
			theWidth=367;
			theHeight=520;
			scroll="yes"; }
		else if(winName=="winDate") {
			theWidth=400;
			theHeight=286; }
		else if(winName=="winSearch") {
			theWidth=480;
			theHeight=435; }
		else if(winName=="winLogin" || winName=="winRemind" || winName=="winUpgrade") {
			theWidth=400;
			theHeight=390; }
		else if(winName=="winTC" || winName=="winSec" || winName=="winCopy") {
			theWidth=590;
			theHeight=400;
			scroll="yes"; }
		else if(winName=="winBB" || self.location.hostname!=txtNewHost) {
			theWidth=832;
			theHeight=520;
			scroll=showToolbar=allowResize=showStatus=showMenubar=showLocation="yes";
			allowResize="1"; }
		if(!isNaN(parseInt(theWidth)) && !isNaN(parseInt(theHeight))) {
			intLeft=(screen.width)?(screen.width-theWidth)/2:0;
			intTop=(screen.height)?((screen.height-theHeight)/2)-30:0;
			params="width="+theWidth+",height="+theHeight+",left="+intLeft+",top="+intTop+",scrollbars="+((scroll)?scroll:"no")+",toolbar="+((showToolbar)?showToolbar:"no")+",resizable="+((allowResize)?allowResize:"no")+",status="+((showStatus)?showStatus:"no")+",menubar="+((showMenubar)?showMenubar:"no")+",location="+((showLocation)?showLocation:"no");
			popupName=window.open(url, winName, params);
			if(popupName) popupName.focus();
			if(winName=="winDate") popupDate=popupName;
			else if(winName=="winSearch") popupSearch=popupName;
			return false; } }
	return true;
}
function winFitPicture() {
	intWidth=(winReturnWidth()-document.images[0].width)*-1;
	intHeight=(winReturnHeight()-document.images[0].height)*-1;
	window.resizeBy(intWidth, intHeight);
	if(intWidth!=0 || intHeight!=0) window.moveTo(parseInt((screen.width-document.images[0].width)/2), parseInt((screen.height-document.images[0].height)/2));
}
function winReturnWidth() {
	if(br=="IE") return document.body.offsetWidth;
	else if(br=="NS6" || br=="NS") return window.innerWidth;
	else return 0;
}
function winReturnHeight() {
	if(br=="IE") return document.body.offsetHeight;
	else if(br=="NS6" || br=="NS") return window.innerHeight;
	else return 0;
}
function winPrint(txtConfirm) {
	if(window.print) {
		var blnPrint=true;
		if(txtConfirm) blnPrint=window.confirm(txtConfirm);
		if(blnPrint) window.print(); }
	else alert("Your browser does not support this feature. You should be\nable to print using the menu that appears at the top of the page.");
	return false;
}

// RETAIL PRICE VALUE FILLER FUNCTION
function fillDown(fuel_type, index) {
	var oldfield = document.retailprices['old['+fuel_type+']['+index+']'];
	var thisfield, nextfield;
	var row = index + 1;
	thisfield = document.retailprices['fuel['+fuel_type+']['+index+']'];
	nextfield = document.retailprices['fuel['+fuel_type+']['+row+']'];
	if(thisfield.value != oldfield.value) {
		thisfield.style.color = '#cc0000';
		thisfield.style.backgroundColor = '#ffffff';
		thisfield.style.fontWeight = 'bold';
		thisfield.value = parseFloat(thisfield.value).toFixed(2);
	}
	while((nextfield) && (nextfield.value == oldfield.value)) {
		nextfield.value = thisfield.value;
		document.retailprices['old['+fuel_type+']['+row+']'].value = thisfield.value;
		row++;
		nextfield = document.retailprices['fuel['+fuel_type+']['+row+']'];
	}
	oldfield.value = thisfield.value;
}

// COST OF FUEL RECALCULATION
function updateTankers() {
	var p_vol = parseInt(document.tankers.ulsp_volume.value);
	var d_vol = parseInt(document.tankers.ulsd_volume.value);
	var p_ppl = document.tankers.ulsp_ppl.value;
	var d_ppl = document.tankers.ulsd_ppl.value;
	var p_oppl = document.tankers.ulsp_oppl.value;
	var d_oppl = document.tankers.ulsd_oppl.value;
	document.tankers.ulsp_cost.value = formatCurr(p_ppl * p_vol);
	document.tankers.ulsd_cost.value = formatCurr(d_ppl * d_vol);
	document.tankers.old_ulsp_cost.value = formatCurr(p_oppl * p_vol);
	document.tankers.old_ulsd_cost.value = formatCurr(d_oppl * d_vol);
	document.tankers.ulsp_diff.value = formatCurr((p_ppl - p_oppl) * p_vol);
	document.tankers.ulsd_diff.value = formatCurr((d_ppl - d_oppl) * d_vol);
}

function formatCurr(x) {
	var y = Math.abs(Math.round(x));
	var dp = new String(y % 100);
	if(dp.length == 1) dp += "0";
	var n = new String(parseInt(y/100));
	var a = [];
	while(n.length > 3)
	{
		var nn = n.substr(n.length-3);
		a.unshift(nn);
		n = n.substr(0,n.length-3);
	}
	if(n.length > 0) { a.unshift(n); }
	n = a.join(",");
	var ret;
	if(x < 0) { 
		ret = "-£"+n+"."+dp;
	} else {
		ret = "£"+n+"."+dp;
	}
	return ret;
}

function Array_unshift() {
  var A_u = 0
  for (A_u = this.length-1; A_u >= 0; A_u--) {
   this[A_u + arguments.length] = this[A_u]
   }
  for (A_u = 0; A_u < arguments.length; A_u++) {
   this[A_u] = arguments[A_u]
   }
  return this.length
}

if (typeof Array.prototype.unshift == "undefined") {
  Array.prototype.unshift = Array_unshift
}

// COMBINATION FUNCTIONS ***************************************************************************************************
function navRoll(imgNumber, txt) {
	if(txt) imgSwap("nav"+imgNumber, txtImgLoc+myNavImages[imgNumber]+txtNavOver);
	else imgSwap("nav"+imgNumber, txtImgLoc+myNavImages[imgNumber]+txtNavOff);
	return winStatus(txt);
}

// CONFIGURATION ***********************************************************************************************************
var flashRequiredVersion=5;	// FLASH: VERSION USER NEEDS TO VIEW SITE
var flashMaxVersion=8;		// FLASH: HIGHEST VERSION
var flashActualVersion=0;	// FLASH: VERSION USER HAS
detectFlash();

// SETUP SPEED OF HELP TAB AS WELL AS MAXIMUM WIDTH
var intHelpPauseBy=25;
var intHelpMoveBy=10; // "intHelpMaxWidth" DIVIDED BY "intHelpMoveBy" MUST EQUAL A NON-FLOATING POINT NUMBER!
var intHelpMaxWidth=240;

// SETUP MAIN NAVIGATION
txtNavSel=txtNavOver="-on.gif";
myNavImages[0]="nav-home";
myNavImages[1]="nav-business_services";
myNavImages[2]="nav-news";
myNavImages[3]="nav-small-about";
myNavImages[4]="nav-small-contact";
myNavImages[5]="nav-small-account";
myNavImages[6]="nav-small-logout";
myNavImages[7]="nav-biofuel";

// OTHER IMAGES TO BE PRELOADED
myNavImages["ST1"]="nav3-daily_quotes";
myNavImages["ST2"]="nav3-pump_price";
myNavImages["ST3"]="nav3-dyn_data";
myNavImages["ST4"]="nav3-assessment";
myNavImages["ST5"]="nav3-intel_reports";
myNavImages["ST6"]="nav3-month_market";
myNavImages["ST7"]="nav3-mark_assess";
myNavImages["helpTab"]="nav-help";
if(self.location.pathname=="/" || self.location.pathname=="/index.html") myOtherImages=new Array("/img/desc-roll-news.gif", "/img/desc-roll-consult.gif", "/img/desc-roll-finance.gif", "/img/desc-roll-deals.gif", "/img/desc-roll-community.gif", "/img/desc-small-roll-about.gif", "/img/desc-small-roll-contact.gif", "/img/desc-small-roll-account.gif");
else if(self.location.pathname.indexOf("/about_us/")!=-1) {
	myNavImages["AU1"]="aboutus-intro";
	myNavImages["AU2"]="aboutus-what";
	myNavImages["AU3"]="aboutus-founders";
	myNavImages["AU4"]="aboutus-hall";
	myNavImages["AU5"]="aboutus-testimonials";
	myNavImages["AU6"]="aboutus-management"; }
else if(self.location.pathname.indexOf("/business_services/")!=-1) {
	myNavImages["BS2"]="nav2-buss-creditc";
	myNavImages["BS3"]="nav2-buss-finance";
	myNavImages["BS5"]="nav2-buss-ads";
	myNavImages["BS6"]="nav2-buss-property";
	myNavImages["BS7"]="nav2-buss-somer";
	myNavImages["BS8"]="nav2-buss-crediti"; }
else if(self.location.pathname.indexOf("/pump_price/")!=-1) {
	myNavImages["PP1"]="nav4-platts_trend";
	myNavImages["PP2"]="nav4-monthly_platts";
	myNavImages["PP4"]="nav4-margin_manage";
	myNavImages["PP5"]="nav5-weekly";
	myNavImages["PP6"]="nav5-monthly";
	myNavImages["PP7"]="nav5-ulspw";
	myNavImages["PP8"]="nav5-ulsdw";
	myNavImages["PP9"]="nav5-delivery_past";
	myNavImages["PP10"]="nav5-delivery_new";
	myNavImages["PP11"]="nav4-gm_analysis";
	myNavImages["PP12"]="nav5-ulsp";
	myNavImages["PP13"]="nav5-ulsd";
	myNavImages["PP14"]="nav4-upd_retail";
	myNavImages["CMM1"]="nav4-month_prem_ul";
	myNavImages["CMM2"]="nav4-month_reg_ul";
	myNavImages["CMM3"]="nav4-month_ulsd";
	myNavImages["CMM4"]="nav4-month_en590";
	myNavImages["CMM5"]="nav4-month_gasoil";
	myNavImages["CMM6"]="nav4-month_jet"; 
	myNavImages["CMM7"]="nav4-month_50ppm"; }
else if(self.location.pathname.indexOf("/dynamic_data/")!=-1) {
	myNavImages["UDD1"]="nav4-exchange_rates";
	myNavImages["UDD2"]="nav4-retail_prices"; }
else if(self.location.pathname.indexOf("/market_assessment/")!=-1) {
	myNavImages["MA1"]="nav4-retail";
	myNavImages["MA2"]="nav4-commercial"; }

// PRELOAD THE IMAGES ONCE THE PAGE HAS LOADED
window.onload=imgPreload;

//******************************************************************************* ANNOYING FUNCTION
function click(e) {
	var txtMessage="The right-click is disabled.\nIf you require any imagery please contact us for more information.";
	if(document.all) {
		if((event.button==2) || (event.button==3)) {
		window.alert(txtMessage);
		return false; } }
	if(document.layers) {
		if(e.which==3) {
		window.alert(txtMessage);
		return false; } }
}
if(document.location.hostname!="bigoil.monitormedia.local" && document.location.hostname!="bigoil.monitormedia.co.uk") {
	if(document.layers) document.captureEvents(Event.MOUSEDOWN);
	document.onmousedown=click; }
