// case size calculation support V1.00

var showexvat = true;			// whether to show ex VAT price
var exprefix  = '£';			// prefix for ex VAT amount
var exsuffix  = '';			// suffix for ex VAT amount
var showincvat = true;			// whether to display inc VAT
var vatprefix  = '&nbsp;(£';		// prefix for inc VAT amount
var vatsuffix  = '&nbsp;inc&nbsp;VAT)';	// suffix for inc VAT amount
var cvatfactor = 1.175;			// VAT factor

var onpage = new Array();

function recalcall(){
	for ( i=0; i < onpage.length; i++ )
		{
		calcprice(onpage[i]);
		}
}

function testkey(ev){			// prevent enter key submitting form on text fields
	return ((ev.which ? ev.which : ev.keyCode) != '13');
}

function checknumeric(id, fname, min, max){	// check if named field is valid number
	var num = document.getElementById(id).value;
	if ( isNaN(num) || (num < 0) || (Math.round(num) != num) )
		{
		alert('Bad ' + fname + '! Must be in mm between ' + min + 'mm and ' + max + 'mm.');
		document.getElementById(id).value = min;
		num = min;
		}
	// valid number, now check limits
	if ( (num != 0) && (num < min) )
		{
		alert(fname + ' is below minimum of ' + min + 'mm!' );
		document.getElementById(id).value = min;
		num = min;
		}	
	if ( (num != 0) && (num > max) )
		{
		alert(fname + ' is above maximum of ' + max + 'mm!' );
		document.getElementById(id).value = min;
		num = min;
		}	
	return num;	
}

function checkaddtocart(ref){		// check that we've all sizes entered before add to cart is allowed
	if ( calcprice(ref) ) return true;
	alert('Required dimensions not all set.');
	return false;
}

function number_format(val, digits){	// prettyfy currency
	val = val - 0;
	return(val.toFixed(digits));
}
	
function calcprice(ref){		// calculate case size and pricing
	var minw = document.getElementById('minw_' + ref).value - 0;	// min width
	var maxw = document.getElementById('maxw_' + ref).value - 0;	// max width
	var mind = document.getElementById('mind_' + ref).value - 0;	// min depth
	var maxd = document.getElementById('maxd_' + ref).value - 0;	// max depth
	var minh = document.getElementById('minh_' + ref).value - 0;	// min height
	var maxh = document.getElementById('maxh_' + ref).value - 0;	// max height
	var w = checknumeric('wd_' + ref, 'Width', minw, maxw) / 1000;	// customer entered width - convert to meters
	var d = checknumeric('dp_' + ref, 'Depth', mind, maxd) / 1000;	// customer entered depth - convert to meters
	var h = checknumeric('ht_' + ref, 'Height', minh, maxh) / 1000;	// customer entered height - convert to meters 
	var cf = document.getElementById('cf_' + ref).value - 0;	// case volume factor
	var cc = document.getElementById('cc_' + ref).value - 0;	// case fixed charge
	var bf = document.getElementById('bf_' + ref).value - 0;	// base area factor
	var bc = document.getElementById('bc_' + ref).value - 0;	// base fixed charge

	var carea =  (2*w*h) + (2*d*h) + (w*d) - 0;			// calculate area material required in m2
	
	if ( (w == 0) || (d == 0) || (h == 0) ) carea = 0;		// set area to zero until all sizes in
	var cprice = (carea * cf) + cc - 0;				// calculate case price
	var barea = 0;
	var bprice = 0;
	var baseinfo = '';
	if ( bf > 0 )                            // is there a base price multiplier?
		{
		barea = (w * d) - 0;					// calculate base area required - m2
		bprice = (barea * bf) + bc;				// calculate base price
		// baseinfo = ';Base:Yes';					// additional info for cart
		}
	var tprice = number_format(cprice + bprice, 2);			// total price ex VAT
	var dispexvat = '';
	if ( showexvat ) dispexvat = exprefix + number_format(tprice, 2) + exsuffix;;	// total price ex VAT
	var dispincvat = '';
	if ( showincvat ) dispincvat = vatprefix + number_format(tprice * cvatfactor, 2) + vatsuffix;	// total price inc VAT
	if ( carea > 0 )
		{							// display total and set form data
		document.getElementById('tot_' + ref).innerHTML = dispexvat + dispincvat;
		// format: {12.34}Width:100;Height:200;Depth:300
		// format: {12.34}Width:100;Height:200;Depth:300;Base:Yes
		document.getElementById('inf_' + ref).value = '{' + tprice + '}Width:' + (w * 1000) + 'mm;Depth:' + (d * 1000) + 'mm;Height:' + (h * 1000) + 'mm' + baseinfo;
		return true;
		}
	else	
		{							// null price and nothing for cart
		document.getElementById('tot_' + ref).innerHTML = '£---';
		document.getElementById('inf_' + ref).value = '';
		return false;
		}
}

if (window.attachEvent) 								// IE 
	{ 
	window.attachEvent("onload", recalcall); 
	} 
else 															// DOM
	{  
	window.addEventListener("load", recalcall, false); 
	}
